0

抱歉,我不知道按关键字查找此内容的正确术语...

因此,作为一个简单的新手练习,我尝试制作一个文件“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,这也可以。)

我只是想以完全错误的方式做到这一点吗?

4

2 回答 2

0

您不能访问 iFrame 中的任何元素,除非 iFrame 引用的是同一个域。

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

从 iframe 调用父窗口函数

对于不同的域,请使用此链接以供参考:

如何使用 Javascript 从 iframe 实现跨域 URL 访问?脚本

于 2013-01-10T08:11:54.560 回答
0

您可以使用以下方法引用其他框架:

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

于 2013-01-10T08:16:05.753 回答