【问题标题】:Access external HTML page content of object tags访问对象标签的外部 HTML 页面内容
【发布时间】:2012-05-26 18:20:59
【问题描述】:

我已经搜索了这个问题的答案,但不知道该怎么做。

我想访问已包含在对象标记中的 div 的内容。

我的 include.htm 文件:

<div id="includedDiv">This is the included page</div>

我尝试过的:

<html>
<head>
<title>Get element from object included page</title>
</head>
<body>
<p>Test: This is the main page</p>
<object id="obj" data="include.htm"></object>
<script>
//alert(document.getElementById("includedDiv").firstChild.nodeValue);
//alert((document.getElementById("obj")).document.getElementById("includedDiv").firstChild.nodeValue);
alert(document.getElementById("obj")["includedDiv"]);
</script>
</body>
</html>

没有任何警报向我打印消息“这是包含的页面”,有没有办法从 DOM 获取此内容?

编辑: window[0].document.getElementById("includedDiv").firstChild.nodeValue;是通过 DOM 访问的好答案,对象标记只是创建另一个窗口 :) http://www.w3schools.com/jsref/prop_win_length.asp

【问题讨论】:

  • 可能的线索,我要访问的内容在外部页面,有人说object标签立即关闭,所以没有子找到stackoverflow.com/questions/1981191/…似乎可以加载外部的内容使用 jQuery 加载方法或使用原生 Javascript AJAX 方法的 HTML 页面 XMLHttpRequest stackoverflow.com/questions/4728520/…
  • 我不明白我们为什么要把事情复杂化,div 内容被加载,我们可以在页面上看到消息,所以它应该在某个地方,可以通过 DOM 访问!
  • @baptx window[0].document.getElementById("includedDiv").firstChild.nodeValue; :)
  • 请注意,查看&lt;object&gt; 的能力可能受同源政策的约束。
  • 这不是重点。你可能会发现它不适用于... data="http://somewhere.else.com" ...

标签: javascript html dom


【解决方案1】:

更好的答案:你可以通过 DOM 访问对象标签内容,它只是另一个窗口!

window[0].document.getElementById("includedDiv").firstChild.nodeValue;

就是这样:D http://www.w3schools.com/jsref/prop_win_length.asp

【讨论】:

  • 嘿,我正在尝试做同样的事情,但我得到:TypeError: undefined is not an object (evaluate 'window[0].document')。有什么想法吗?
  • @Miguel 很抱歉回复晚了,如果它说 window[0].document 未定义,这应该意味着您在网页上没有任何框架(iframe 或对象)。请注意,出于安全原因,框架应使用相同的域,否则您会收到另一个错误:stackoverflow.com/questions/7995223/…
【解决方案2】:

document.getElementById('id').innerHTMLdocument.getElementById('id').outerHTML 随便你找一个...

how to append to a object with innerHTML

【讨论】:

  • 我想获取包含在“object”标签中的 HTML 页面的内容,而不是简单的 div 对象的内容。 HTML 对象标签:w3schools.com/tags/tag_object.asp
  • 不幸的是,如果 div 在同一页面上,您的解决方案有效,但在我的情况下它不是并且 alert(document.getElementById("obj").innerHTML);打印一条空白消息
  • 如果你得到 div 'includedDiv' 并使用outerHTML呢?
  • 另外,如果这不起作用,试试这个......当页面加载时,有一个函数将 window.name 属性修改为加载内容的“innerHTML”,然后调用回调函数.. . 当调用该函数时,您将在 window.name... 中获得内容...
  • include.onload = function () { window.name = globalCallable(document.innerHTML.toString()); } outerpage.globalCallable(x) { 返回 x; }
【解决方案3】:

知道了!只需使用

window.parent.mainPageMethod(document.getElementById("includedDiv").firstChild.nodeValue);

在包含的页面中,您可以从主页中获取 Javascript 函数中的 div 内容!

感谢您尝试帮助 Jay,我应该承认,当您谈到 window.name 属性时,它让我找到了正确的方向 :)

【讨论】:

猜你喜欢
  • 2013-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多