如何在javascript变量中存储网页的静态内容?

时间:2011-09-21 19:51:13

标签: javascript html iframe dojo

这就是我想要完成的事情: 获取“外部”网址的静态内容并检查某些关键字,例如“用户指南”或“找不到网页”。

我尝试使用Ajax,dojo.xhr等,但它们不支持跨域。就我而言,它是一个外部网址。另外,我不能使用jQuery。

我也看了dojo.io.iframe,但是我找不到有用的例子来实现这个目标。

dojo.io.iframe示例非常有用。 请帮忙。

谢谢!

2 个答案:

答案 0 :(得分:1)

现代浏览器限制使用跨域脚本。如果您是服务器的维护者,请阅读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);
}

这仅适用于图片资源。阅读评论以了解如何使用其他来源。

答案 1 :(得分:0)

试试这个:

<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>