我知道JavaScript可以在新窗口中打开链接,但是可以打开网页而不在窗口中打开或显示给用户吗?我想做的是解析该网页的一些文本并将其用作变量。
这是否可能无服务器端语言的任何帮助?如果是这样,请按我可以实现的方向发送给我。
谢谢所有
var req = new XMLHttpRequest();
req.open('GET', 'http://www.mydomain.com/', false);
req.send(null);
if(req.status == 200)
dump(req.responseText);
一旦加载,就可以通过使用req.responseText成员上的javascript regular expressions来执行解析/抓取。
更多详细信息...实际上,您需要做更多的工作才能以跨平台的方式获取XMLHttpRequest对象,例如:
var ua = navigator.userAgent.toLowerCase(); if (!window.ActiveXObject) req = new XMLHttpRequest(); else if (ua.indexOf('msie 5') == -1) req = new ActiveXObject("Msxml2.XMLHTTP"); else req = new ActiveXObject("Microsoft.XMLHTTP");
或使用图书馆...
或者,您可以省去很多麻烦,只需要使用jQuery或Prototype之类的库来为您解决这个问题。原产地政策可能会咬你...
请注意,由于same-origin policy,您请求的页面必须与发出请求的页面来自同一域。如果要请求远程页面,则必须通过服务器端脚本来代理它。
另一种可能的解决方法是使用Flash发出请求,如果目标站点使用适当配置的crossdomain.xml文件授予许可,则该请求允许跨域请求。
这里有一篇关于原产地政策的文章:
Same-Origin Policy Part 1: Why we’re stuck with things like XSS and XSRF/CSRF
$.getJSON('http://whateverorigin.org/get?url=' + encodeURIComponent('http://google.com') + '&callback=?', function(data){
alert(data.contents);
});
尽管请注意,如果您打开的网站来自其他URL,则Javascript访问受到限制。这是为了防止跨站点脚本攻击: