Fáb*_*nes 23 javascript browser dom
美好的一天.
我从来没有真正掌握JavaScript,因此这个不寻常和简单的问题.
如何将页面内容加载到JavaScript变量,代码量最少,没有框架,对性能的影响可能性较小?
谢谢.
编辑
对不起大家.我忘了提到:从指定的URL获取页面内容到JS var.
我已经在其他地方看到了Brendan的替代方案并尝试了它,但它当时没有用,现在它不起作用.同时Firebug和浏览器测试(IE8和FF)不报告任何错误.那么什么是错的?
Bre*_*dan 16
这是您可以在w3schools.com上找到的示例的修改版本.
<script type="text/javascript">
function loadXMLDoc(theURL)
{
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari, SeaMonkey
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
alert(xmlhttp.responseText);
}
}
xmlhttp.open("GET", theURL, false);
xmlhttp.send();
}
</script>
Run Code Online (Sandbox Code Playgroud)
因此,只需使"example.html"成为您要加载的页面的任何路径(相对或绝对),并且xmlhttp.responseText将是包含响应内容的字符串.xmlhttp.responseXML如果您希望将其存储为可遍历的XML文档,也可以使用它.无论如何,只需将其中任何一个分配给您选择的变量,您就可以拥有它!
请注意,'loadXMLDoc'不会直接返回任何内容,而是定义其中一个成员('onreadystatechange')来完成该工作,并仅在某些条件下(readyState和status)执行此操作.结论 - 不要将此函数的输出分配给任何var.而是做类似的事情:
var xmlhttp=false;
loadXMLDoc('http://myhost/mycontent.htmlpart');
if(xmlhttp==false){ /* set timeout or alert() */ }
else { /* assign `xmlhttp.responseText` to some var */ }
Run Code Online (Sandbox Code Playgroud)
没有它,所有人都可以看到'未定义'......
waj*_*jiw 12
要获取html标记内的所有内容:
var html = document.getElementsByTagName('html')[0];
var text = html.innerHTML;
Run Code Online (Sandbox Code Playgroud)
然后你可以将它包装在html标签中.不捕获doctype或html标记之外的任何其他内容,但它是获取大部分内容的快捷方式.
我知道这个问题现在已经很老了,但是我试图将页面内容变成一个变量时遇到了同样的问题,但最终在Javascript中找到了一种方法:D(借助互联网的一些帮助...)
所以这里......
我使用回调函数来获得所需的页面:
function getPageContents(callback,url,params) {
http=new XMLHttpRequest();
if(params!=null) {
http.open("POST", url, true);
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
} else {
http.open("GET", url, true);
}
http.onreadystatechange = function() {
if(http.readyState == 4 && http.status == 200) {
callback(http.responseText);
}
}
http.send(params);
}
Run Code Online (Sandbox Code Playgroud)
请注意,我已经以这样的方式制作它,它不会接受GET参数.这是故意的,因为我不需要在我的应用程序中使用GET.如果设置了params,它们将作为POST发送.
然后使用该函数,假设我想发布一个名称findpersoninfo.php,将输出该人员信息的JSON数组,我可以这样做:
getPageContents(function(result) {
personinfo=JSON.parse(result);
//Now I can do anything here with the personinfo array
},'http://localhost/findpersoniinfo.php','fname=stretch&lname=wright')
Run Code Online (Sandbox Code Playgroud)
更进一步,你可以将它嵌套在另一个函数中,让我们调用它getPersonInfo():
function getPersonInfo(fname,lname) {
getPageContents(function(result) {
personinfo=JSON.parse(result);
//Now I can do anything here with the personinfo array
},'http://localhost/findpersoninfo.php','fname='+fname+'&lname='+lname)
}
Run Code Online (Sandbox Code Playgroud)
当然,我对Javascript的了解还处于初期阶段,并欢迎任何建设性的反馈:D
| 归档时间: |
|
| 查看次数: |
79056 次 |
| 最近记录: |