2012-01-10 100 views
16

我使用对象标签来加载html页面内的html代码片段。如何从对象标签获取html元素?

我的代码如下几行内容:

<html><object data="/html_template"></object></html>

由于页面加载一些元素对象的标记之间添加后的预期。 我想获得这些元素,但我似乎无法访问它们。

我已经试过这些下面 $("object").html()$("object").children()$("object")[0].innerHTML

无似乎工作。是否有另一种方式来获得这些元素?

编辑:

更详细的例子:

考虑这个

<html><object data="http://www.YouTube.com/v/GGT8ZCTBoBA?fs=1&hl=en_US"></object></html>

如果我试图让我得到一个空字符串对象中的HTML。

http://jsfiddle.net/wwrbJ/1/

+0

'$(“object”)'返回一些东西吗? – 2012-01-10 05:05:58

+0

如果我的猜测是正确的,你可能会使用IE浏览器? – AmGates 2012-01-10 05:11:10

+0

是$(“object”)返回一些东西。并且来吧我没有使用IE – Noam 2012-01-10 05:34:43

回答

9

innerHTML将provid访问哪些是在<object></object>之间的HTML。所要求的是如何让对象加载的HTML在其生成的窗口/框架内(与开放和关闭标签之间的代码无关)。

我也在寻找答案,我恐怕没有。如果我找到一个,我会回来把它张贴在这里,但我现在正在寻找(而不是单独)很多时间。

0

试试这个:

// wait until object loads 
$('object').load(function() { 
    // find the element needed 
    page = $('object').contents().find('div'); 
    // alert to check 
    alert(page.html()); 
}); 
+0

$('object')。contents()returns [] – Noam 2012-01-10 05:35:46

+0

$('object')。contents()是一个集合,您必须搜索该对象内的元素 – 2012-01-10 05:41:30

+1

尝试使用:$('object')。contents()。find('html')。html(); – 2012-01-10 05:47:28

0

在这里做了哪些工作代码样片。不知道你的代码有什么问题。

<html> 
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
<script type="text/javascript"> 
    $(document).ready(function(){ 
      var k = $("object")[0].innerHTML; 
      alert(k); 
      $("object")[0].innerHTML = "testing"; 
     }); 
</script> 
<object data="/html_template">hi</object> 
</html> 
13

只要你将它放在同一个域,你可以做到以下几点:

HTML

<html> 
    <object id="t" data="/html_template" type="text/html"> 
    </object> 
</html> 

的JavaScript

var t=document.querySelector("#t"); 
var htmlDocument= t.contentDocument; 
0

你可以使用下面的代码读取对象数据一旦它完全加载并且具有相同的域:

HTML-

<html> 
<div class="main"> 
<object data="/html_template"> 
</object> 
</div> 
</html> 

Jquery-

$('.main object').load(function() { 
    var obj = $('.main object')[0].contentDocument.children; 
    console.log(obj); 
}); 

希望这有助于!

-2

修订

我用这行JavaScript来改变一个iFrame内提交了输入的值,

document.getElementById('iframeID').contentWindow.document.getElementById('inputID').value = 'Your Value';

参考: https://stackoverflow.com/a/14451440/3452102

0

不,它不是可能有机会获得跨源帧!