JavaScript взимащ HTML

dakata__92

Super Moderator
Здравейте колеги! Интересува ме има ли опция в JS, която е аналогична на file_get_contents(); в PHP ? Искам да взимам кода на дадена страница с JS и от него с регулярни изрази да си извадя нужната информация за дадените проверки. Възможно ли е това?
 
dakata__92 каза:
deam0n каза:
http://api.jquery.com/jQuery.get/
Тази опция няма ли я в чист JS ?

Можеш да пробваш така:

Код:
fh = fopen('c:\\FileName.txt', 0); // Open the file for reading.
if(fh!=-1) // Check if the file has been successfully opened.
{
    length = flength(fh); // Get the length of the file.
    str = fread(fh, length); // Read in the entire file.
    fclose(fh); // Close the file.

    // Display the contents of the file.
    write(str);
}

http://www.c-point.com/JavaScript/articles/file_access_with_JavaScript.htm
 
[js]
<script>
fh = fopen('http://web-tourist.net/forum/viewtopic.php?t=125202', 0); // Open the file for reading.
if(fh!=-1) // Check if the file has been successfully opened.
{
length = flength(fh); // Get the length of the file.
str = fread(fh, length); // Read in the entire file.
fclose(fh); // Close the file.

// Display the contents of the file.
write(str);
}
</script>[/js]

Не се получава! Това мисля, че е само за текстови файлове, а аз желая да се взима HTML сорса на дадена страница.
 
Пробвай това: http://phpjs.org/functions/fopen/

С каква цела искаш да го направиш?
 
deam0n каза:
Пробвай това: http://phpjs.org/functions/fopen/

С каква цела искаш да го направиш?
Желая да имам едно текстово поле в което да въвеждам линкове ръчно и посредством id на полето JS да взима HTML сорса на дадената страницада го въвежда в масив и да търси определени параметри от масива(сорса на въведения линк) благодарение на регулярни изрази. Така ще си направя проверки и ще изведа определена информация на база въведения линк.
 
document.getElementsByTagName('html')[0].innerHTML

това трябва да ти свърши работа, а после ако искаш да променяш хтмл-а, трябва да го направиш string
 
nqkafff каза:
document.getElementsByTagName('html')[0].innerHTML

това трябва да ти свърши работа, а после ако искаш да променяш хтмл-а, трябва да го направиш string
И как точно ще ми помогне ?
[js]
<html>
<head>
<script language="JavaScript" type="text/javascript">
var link = document.getElementById('link').value;
var html = link.document.getElementsByTagName('html')[0].innerHTML;

alert(html);



</script>
</head>
<BODY>
<input id="link" type="text" value="http://web-tourist.net/forum/viewtopic.php?t=125202">
</body>
</html>
[/js]
 
HTML:
<!DOCTYPE html>
<html lang="en">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
		<script>
			var viewsrc = new XMLHttpRequest();

			viewsrc.open('GET', window.location.href, false);
			viewsrc.send();

			alert(viewsrc.responseText)
		</script>
	</head>
	<body>
		<h1>test</h1>
	</body>
</html>
 
Ок това ми извежда кода на страницата нооо как да променям линка и връзката ? Така НЕ се получава :
[js]
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script>
var viewsrc = new XMLHttpRequest();

viewsrc.open('GET', "http://web-tourist.net/forum/viewtopic.php?t=125202", true);
viewsrc.send();

alert(viewsrc.responseText);

</script>
</head>
<body>
<h1>test</h1>
</body>
</html>
[/js]
 
С кода от линка повече се обърквам! Неможе ли по-нагледен пример? Принципно второто мнение в сайта ме обърква тотално...
 
Кода на колегата е добър, но не се справям с подаването на даден линк на който да взема сорса...
 
Защо, когато променя:
[js]var viewsrc = new XMLHttpRequest();
viewsrc.open('GET', window.location.href, false);
viewsrc.send(null);[/js]

на

[js]
var viewsrc = new XMLHttpRequest();
viewsrc.open('GET','http://web-tourist.net/forum/viewtopic.php?t=125202&start=12', true);
viewsrc.send(null);[/js]

Не взима кода на линка, който съм подал... Проблема да не е в подготовката на линка ? Защо не се получава ? Да не трябва да преминава през някакви функции ?
 
Не можеш чрез ajax да правиш заявки към сайтове, върху които нямаш контрол. Или най-малкото, към сайтове, които не са разрешили подобни заявки.

Но пък можеш да си направиш нещо като прокси на твоя сървър.


1. Този РНР файл трябва да е на твоя сървър. Той ще получава Ajax заявките от твоя сайт, ще взима съдържанието от отдалечените сайтове, и ще го връща обратно на Javascript.

handle.php
PHP:
<?php
if(isset($_POST['targetUrl']) && !empty($_POST['targetUrl'])){
    echo file_get_contents($_POST['targetUrl']);
}


2. Това е твоя front-end:

HTML:
<input type="text" name="targetUrl" id="targetUrl">
<input type="submit" value="Go" id="submit">

<script type="text/javascript">

$(function(){
     //при кликване върху бутона, да се изпълни функцията getTargetContent
     $('#submit').click(getTargetContent);
});


function getTargetContent(){

    $.post(
           'handle.php', 
           {targetUrl: $('#targetUrl').val()}, 
           function(response){
                console.log(response);
    });

}

</script>

Постването може да се направи по най-различни начини, например можеш да имаш формуляр, който за сериализираш и изпращаш. Резултата в момента го изпращам в конзолата, само за пример, но можеш да си го използваш директно за каквото ти е необходим.
 
Принципно с PHP можех спокойно да се справя и сам да го направя изцяло на него... Въпроса е че ми е нужен под формата на JS което явно не е възможно. Няма ли друг варянт с който да взимам информацията на даден линк както ти показа ? Да се въвежда връзката в ифрейм примерно и от там да се взима въпросния HTML на страницата или някаква подобна врътка ? Няма да обеснявам защо не желая PHP но си блъскам здраво главата как да взема информацията от дадена страница и да се получи масив! Приложението което ще пиша не изисква локален хост или нещо от този сорт а е HTML разширение, но е адски гъвкаво и просто тази част се закучи.
 

Back
Горе