JavaScript从任意URL的HTML内部获取一些信息

JavaScript to get some information from inside the HTML at an arbitrary URL?

本文关键字:获取 信息 内部 HTML 任意 URL JavaScript      更新时间:2023-09-26

对不起,我不知道通过关键字查找的正确术语…

因此,作为一个简单的新手练习,我尝试创建一个文件"test.html"(就在我的桌面上),这样当我在浏览器中加载它并单击页面上出现的按钮时,维基百科主页上的文章计数将出现在按钮下的页面上。

有人告诉我尝试使用iframe,我想到了这个:

<!DOCTYPE html>
<html>
<head>
    <script type="text/javascript"">
function get_count(){
    var articlecount = document.getElementById("wiki_page").contentWindow.document.getElementById("articlecount").getElementsByTagName("a")[0].innerHTML;
    document.getElementById("put_number_here").innerHTML = articlecount;
}
    </script>
</head>
<body>
    <iframe id="wiki_page" style="display:none" src="http://en.wikipedia.org/wiki/Main_Page"></iframe>
    <input type="button" onclick="get_count()" />
    <p id="put_number_here"><p>
</body>
</html>

它不起作用,当我在记事本上测试时(使用Firefox 17),我得到了这个:

var x = document.getElementById("wiki_page").contentWindow.document.getElementById("articlecount").getElementsByTagName("a")[0].innerHTML;
alert(x);
/*
Exception: Permission denied to access property 'document'
@Scratchpad:10
*/

(和alert(document.getElementById("articlecount").getElementsByTagName("a")[0].innerHTML);工作完美的http://en.wikipedia.org/wiki/Main_Page直接,所以我知道这不是问题。将维基百科主页的源代码复制到一个新文件"test2.html",并将其设置为iframe的src,这也有效。

我只是想用完全错误的方式来做这件事吗?

你不能访问iFrame内的任何元素,除非iFrame引用了相同的域。

对于相同的域调用,使用此链接作为参考:

从iframe中调用父窗口函数

为不同的域名,用户此链接供参考:

我如何实现跨域URL访问从一个Iframe使用Javascript?脚本

你可以使用:

window.frames["wiki_page"]

然后你可以使用

在DOM中引用该元素:
window.frames["wiki_page"].document.getElementById ("articlecount");

你可以试试:

var targetFrame = window.frames["wiki_page"];

targetFrame.document.getElementById("IDOfSomething");

确保您的iframe仍然命名为wiki_page等