contentWindow.document.close()

时间:2019-06-02 14:38:35

标签: javascript html dom iframe document

我正在开发一个chrome扩展程序,在该程序中,我试图自动以表格形式填充字段/值,这样就无需显式键入它。我正在尝试在window.onload

期间加载内容

window.onload = function() {
  alert(document.getElementById('mce_0_ifr'));
  alert("Window loaded!");
  setTimeout(setText, 2000);    
};

function setText() {
	/**
	This logic of having it as 0 will not work always. When you create the same dialog for 
	the second time it's incrementing it's value by 1.
	**/
	alert("Inside set text");
	if(document.getElementById('mce_0_ifr') != null) {
        var doc = document.getElementById('mce_0_ifr').contentWindow.document;
		doc.open();
		doc.write('<b> Student details </b>');
		doc.write('<br><br> Student Name : ');
		doc.write('<br><br> Age : ');
		doc.write('<br><br> Class : ');
		doc.write('<br><br> Subjects interested : ');
		doc.write('<br><br> Extra caricular activities : ');
		doc.write('<br><br> Father's name : ');
		doc.write('<br><br> Mother's name : ');
		doc.write('<br><br> Maid's name : ');
		doc.write('')
		doc.close();
	}
}

执行完此操作后,无法将ID为mce_0_ifr的内容添加到iframe。我想在页面加载时将内容(一些默认文本)加载到iframe中,并应该允许用户对其进行进一步的编辑。任何帮助,将不胜感激。

1 个答案:

答案 0 :(得分:1)

在close()文档之后,它就完成了对该文档的写入。为了再次进行write(),您需要再次对其进行open()。在您的情况下,再次打开它将丢失以前编写的内容。 这是我的工作。首先打开文档并在上面写基本的HTML结构:

doc.open();
doc.write("<html><head></head><body></body></html>");
doc.close();

现在,您可以通过操作DOM来操作文档,而不是直接将其写入其中:

var line=document.createElement("div");
line.innerHTML='<b> Student details </b>';
line.innerHTML=line.innerHTML+'<br><br> Student Name : <span id="student_name"></span>';
line.innerHTML=line.innerHTML+'<br><br> Age : <span id="student_age"></span>';
...
doc.body.append(line);

此外,您可以通过获取他们的DOM元素然后更改其值来修改student_name和student_age:

doc.getElementById("student_name").innerText="rm -rf star";
doc.getElementById("student_age").innerText="21";