我正在使用jquery并试图找到一个嵌入在<object>中的<html>标记。我正在尝试使用find方法,但找不到。有人能帮我引路吗。
代码:
if (dialogObject.find('head')) {
var findelemnt = $('#dialogObject').find('html');
var testthis = findelemnt.attr("class");
alert(testthis);
}
else { alert("not found") }dialoObject是一个<div>。附加页面的屏幕截图。

发布于 2014-08-05 10:42:34
我认为这可能是由于same origin policy导致的失败。参见https://stackoverflow.com/a/14453363/560114。
尝试使用本地URL -我猜你可以使用下面的代码让它在那里工作:
$('#dialogObject')[0].contentDocument发布于 2014-08-05 08:07:08
$('#dialogObject').find('head') -你已经通过正确的选择器调用了你的元素。
发布于 2014-08-05 10:04:04
如果您正在尝试嵌入嵌套的浏览上下文,您可以添加一个"name“属性:
<object id="dialogObject" data="http://domain/path" name="myWindow"></object>并使用myWindow.document.documentElement或window["myWindow"].document.documentElement访问嵌套的<html>元素。
编辑1:虽然您可以通过其"id“属性访问<object>元素,例如window.dialogObject、window["dialogObject"],当然也可以通过其"name”属性访问嵌套的window对象,例如myWindow或window["myWindow"]。
就此而言,$(myWindow.document.documentElement)等同于使用$(myWindow.document).find('html')。
编辑2:如果你喜欢按照你的原始代码使用"id“属性,你可以把Matt Browne的answer和上面的结合起来实现以下功能:
$($('#dialogObject')[0].contentDocument).find('html')尽管我会提出以下建议:
$(document.getElementById("dialogObject").contentDocument.documentElement)除此之外,不要忘记在文档就绪事件处理程序中执行代码,以确保在您尝试访问任何有问题的元素时DOM已经完全加载。
https://stackoverflow.com/questions/25129338
复制相似问题