Javascript 如何在jquery中访问动态创建的对象标记的内容?
我已经为这个问题寻找了几个小时的答案,但似乎找不到任何有效的解决方案。我已经使用jquery创建了一个动态对象标记,并将其数据设置到我网站上的另一个页面。我将object标记附加到div,并将div附加到页面主体。我想做的是访问我设置为对象标记数据的页面的html,以便监视该页面上的更改,并根据这些更改更新我的当前页面。在html中定义对象标记时,我可以使用对象标记的contentDocument属性访问其内容,但在动态生成标记时,contentDocument是未定义的。我还尝试使用jquery的contents函数,但它返回一个长度为0的对象。以下是我尝试过的基本内容: 这是我的页面test.php的代码:Javascript 如何在jquery中访问动态创建的对象标记的内容?,javascript,jquery,html,Javascript,Jquery,Html,我已经为这个问题寻找了几个小时的答案,但似乎找不到任何有效的解决方案。我已经使用jquery创建了一个动态对象标记,并将其数据设置到我网站上的另一个页面。我将object标记附加到div,并将div附加到页面主体。我想做的是访问我设置为对象标记数据的页面的html,以便监视该页面上的更改,并根据这些更改更新我的当前页面。在html中定义对象标记时,我可以使用对象标记的contentDocument属性访问其内容,但在动态生成标记时,contentDocument是未定义的。我还尝试使用jquer
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
function test()
{
var parentDiv = document.createElement("div");
$(parentDiv).addClass("parentDiv");
var object = $("<object>");
$(object).attr("id","objectId");
$(parentDiv).append(object);
$("body").append(parentDiv);
$(object).attr("data","test2.html");
$(object).addClass("object");
// These give errors
var content = object.contentDocument;
alert(content.getElementById("div"));
var content = $(object).contents();
alert(content.length());
/* THIS WORKS IF object defined as a tag in HTML body
var content = document.getElementById("objectId").contentDocument;
alert(content.getElementById("div").innerHTML);
*/
}
</script>
</head>
<body onload="test()">
<!-- <object id="objectId" data="test2.html"></object> -->
</body>
</html>
试验
功能测试()
{
var parentDiv=document.createElement(“div”);
$(parentDiv).addClass(“parentDiv”);
变量对象=$(“”);
$(object.attr(“id”,“objectId”);
$(parentDiv).append(对象);
$(“正文”).append(parentDiv);
$(object.attr(“data”,“test2.html”);
$(对象).addClass(“对象”);
//这些都是错误的
var content=object.contentDocument;
警报(content.getElementById(“div”);
var content=$(object.contents();
警报(content.length());
/*如果对象在HTML正文中定义为标记,则此操作有效
var content=document.getElementById(“objectId”).contentDocument;
警报(content.getElementById(“div”).innerHTML);
*/
}
这是object data test.html页面的代码:
<!DOCTYPE html>
<html>
<head>
<title>Test 2</title>
</head>
<body>
<div id="div" style="width:200px;height:200px;background-color:red">
DIV Contents
</div>
</body>
</html>
测试2
DIV目录
非常感谢您的帮助。谢谢。此时,它是一个jQuery对象。因此,您需要定义它:
// Replace it like this:
var content = document.getElementById("objectId").contentDocument;
var content = object.contentDocument;
alert(content.getElementById("div"));
var content = $(object).contents();
alert(content.length());
或者,您也可以使用以下命令:
// Replace it like this:
var content = $("#objectId").get(0).contentDocument;
var content = object.contentDocument;
alert(content.getElementById("div"));
var content = $(object).contents();
alert(content.length());
我认为您混淆了许多HTML/Javascript概念。我已更正您的代码,至少没有错误:
var parentDiv = document.createElement("div");
$(parentDiv).addClass("parentDiv");
var object = document.createElement("object");
object.setAttribute("id", "objectId");
object.innerHTML = "Hello, Earth!";
$(parentDiv).append(object);
$("body").append(parentDiv);
object.setAttribute("data", "test2.html");
$(object).addClass("object");
var content = document.getElementById("objectId");
alert(content.innerHTML);
var object=$(“”)
将不起作用,因为页面上不存在CSS选择器所针对的对象。我将该位改为document.createElement(“对象”)
对象
变量现在是一个DOM元素,因此我选择使用.setAttribute
函数,这是一个本机DOM函数$(“body”).append(parentDiv)
将正确地将parentDiv
(及其子object
)DOM元素添加到body
元素的末尾。这允许$(object).addClass(“object”)
正常工作contentDocument
属性是用户的专有属性。我已将属性改为innerHTML。警报框正确显示“Hello,Earth!”这是对象的内容
您为什么需要它?对于点击事件等?我需要在对象标签中的页面就像一个警报监视器,并且将不断变化。我需要能够看到何时有警报,并在警报发生时在我的页面上执行一些操作。感谢您的回复Praveen。不幸的是,它仍然在Chrome中给出了相同的错误:Uncaught TypeError:无法读取undefinedIsn的属性'getElementById',没有任何方法可以访问动态创建的对象标记的内容吗?我的意思是,这完全错了!!你想做什么?使用
content.find(“div”)代码>相同。不幸的是,仍然是相同的错误。页面test2.html的内容显示在我的页面上,但是object.contentDocument在尝试访问外部页面上的元素时返回undefined。如果标签不是动态创建的,它就可以工作。谢谢你的回复。但问题不在于访问对象标记的内部html。我想访问加载到对象变量中的页面上的元素(test2.html上的元素)。如果我直接在我的主体中定义对象标记(而不是动态地附加它),contentDocument属性可以正常工作。如果像您一样动态创建对象变量,是否应该有一种方法来访问对象标记数据页的元素?您是否看到: