Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript:如何检索HTML对象标记的文档对象?_Javascript_Html_Document.write - Fatal编程技术网

JavaScript:如何检索HTML对象标记的文档对象?

JavaScript:如何检索HTML对象标记的文档对象?,javascript,html,document.write,Javascript,Html,Document.write,我尝试在对象元素(type=“text/html”)内调用document.open/write/close序列。在Safari/Chrome中,我能够通过contentDocument属性获取内部文档对象。示例代码(使用jquery): $(文档).ready(函数(){ 变量容器=$(“”) .css({'width':'700px','height':'100px','border':'0px none'}) .attr({'type':'text/html'}).appendTo('bo

我尝试在对象元素(type=“text/html”)内调用document.open/write/close序列。在Safari/Chrome中,我能够通过contentDocument属性获取内部文档对象。示例代码(使用jquery):

$(文档).ready(函数(){
变量容器=$(“”)
.css({'width':'700px','height':'100px','border':'0px none'})
.attr({'type':'text/html'}).appendTo('body');
var doc=container.get(0).contentDocument;
doc.open();
博士写(‘你好,世界!’);
doc.close();
});
在其他浏览器中也有同样的方法吗


我之所以想做这种奇怪的事情,是因为我需要在DOM关闭后调用包含document.write的外部脚本。我已经尝试过处理iFrame,但由于Internet Explorer和Opera的bug,我失败了。任何其他实现这一目标的方法都将受到赞赏。

这应该对你有用。我不知道为什么(我只是怀疑)

$(文档).ready(函数(){
变量容器=$(“”)
.css({
“宽度”:“700px”,
“高度”:“100px”,
“边框”:“0无”
})
艾特先生({
'type':'text/html',
“数据”:“关于:空白”
})
.附于(“主体”);
函数writeToDoc(){
var-obj,doc;
obj=容器get(0);
if(目标文件){
doc=obj.document;
}else if(对象内容窗口){
doc=obj.contentWindow.document;
}
else if(对象内容文档){
doc=obj.contentDocument;
}
国际单项体育联合会(doc){
doc.open();
写文件('Works!');
doc.close();
}否则{
$('body').append('No luck…');
}
};
//是的,这很奇怪
setTimeout(writeToDoc,0);
});

对象元素在HTML5中已被弃用,因此您将无法再使用它。

什么bug?对象的src最初是同一原点吗?Bobince评论解释了bug。IE9仍然受到影响,最终可能崩溃。
$(document).ready(function() {
  var container = $('<object/>')
    .css({'width': '700px', 'height': '100px', 'border': '0px none'})
    .attr({'type': 'text/html'}).appendTo('body');

  var doc = container.get(0).contentDocument;
  doc.open();
  doc.write('<h1>Hello world!</h1>');
  doc.close();
});
$(document).ready(function () {
    var container = $('<object>')
        .css({
            'width': '700px',
            'height': '100px',
            'border': '0 none'
        })
        .attr({
            'type': 'text/html',
            'data': 'about:blank'
        })
        .appendTo('body');

    function writeToDoc() {
        var obj, doc;
        obj = container.get(0);
        if (obj.document) {
            doc = obj.document;
        } else if (obj.contentWindow) {
            doc = obj.contentWindow.document;
        }
        else if (obj.contentDocument) {
            doc = obj.contentDocument;
        }
        if (doc) {
            doc.open();
            doc.write('<h1>Works!</h1>');
            doc.close();
        } else {
            $('body').append('<h1>No luck...</h1>');
        }
    };

    // yes, this is weird
    setTimeout(writeToDoc, 0);
});