Как мне хранить статическое содержимое веб-страницы в переменной javascript? - PullRequest
1 голос
/ 21 сентября 2011

Вот что я пытаюсь сделать: Получите статическое содержимое «внешнего» URL-адреса и проверьте его на наличие определенных ключевых слов, например, «Руководство пользователя» или «Страница не найдена».

Я пытался использовать Ajax, dojo.xhr и т. Д., Но они не поддерживают кросс-домен. В моем случае это внешний URL. Также я не могу использовать jQuery.

Я также посмотрел на dojo.io.iframe, но не смог найти полезного примера для этого.

Пример dojo.io.iframe был бы очень полезен. Пожалуйста, помогите.

Спасибо!

Ответы [ 2 ]

1 голос
/ 21 сентября 2011

Современные браузеры ограничивают использование междоменных сценариев. Если вы поддерживаете сервер, прочитайте Access-Control-Allow-Origin , чтобы узнать, как включить межсайтовый скриптинг на вашем сайте.

РЕДАКТИРОВАТЬ : Чтобы проверить, не работает ли внешний сайт, вы можете использовать этот метод. Этот внешний сайт должен иметь файл изображения. У большинства сайтов есть файл с именем favicon.ico в корневом каталоге.

Пример, проверка, находится ли http://www.google.com/ в сети или нет.

var test = new Image();

//If you're sure that the element is not a JavaScript file
//var test = document.createElement("script");

//If you're sure that the external website is reliable, you can use:
//var test = document.createElement("iframe");

function rmtmp(){if(tmp.parentNode)tmp.parentNode.removeChild(tmp);}
function online(){
    //The website is likely to be up and running.
    rmtmp();
}
function offline(){
    //The file is not a valid image file, or the website is down.
    rmtmp();
    alert("Something bad happened.");
}
if (window.addEventListener){
    test.addEventListener("load", online, true);
    test.addEventListener("error", offline, true);
} else if(window.attachEvent){
    test.attachEvent("onload", online);
    test.attachEvent("onerror", offline);
} else {
    test.onload = online;
    test.onerror = offline;
}

test.src = "http://www.google.com/favicon.ico?"+(new Date).getTime();
 /* "+ (new Date).getTime()" is needed to ensure that every new attempt
    doesn't get a cached version of the image */
if(/^iframe|script$/i.test(test.tagName)){
    test.style.display = "none";
    document.body.appendChild(test);
}

Это будет работать только с ресурсами изображения. Прочитайте комментарии, чтобы узнать, как использовать другие источники.

0 голосов
/ 05 октября 2011

Попробуйте это:

<script src="https://ajax.googleapis.com/ajax/libs/dojo/1.6.1/dojo/dojo.xd.js.uncompressed.js" type="text/javascript" djConfig="parseOnLoad:true"></script>

<script>
    dojo.require("dojo.io.script");
</script>

<script>
dojo.addOnLoad(function(){

  dojo.io.script.get({

    url: "http://badlink.google.com/",
    //url: "http://www.google.com/",

    load: function(response, ioArgs) {
        //if no (http) error, it means the link works
        alert("yes, the url works!")
    }

  });
});
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...