我有一个存储在服务器上的文本文件和一个HTML中的对象,就像这样:
<object id="data" type="text/plain" data="test.txt"></object>
如何在JavaScript中读取
test.txt
的内容?我目前所拥有的是:var data = document.getElementByID("data");
但我不知道如何读取对象标签内的HTML文档。
我有一个存储在服务器上的文本文件和一个HTML中的对象,就像这样:
<object id="data" type="text/plain" data="test.txt"></object>
test.txt
的内容?我目前所拥有的是:var data = document.getElementByID("data");
但我不知道如何读取对象标签内的HTML文档。
object
标签需要向服务器发起单独的请求并加载内容。 与此同时,您的JavaScript已经执行并且“失去了机会”。object
的 onload 事件中运行您的代码。.contentDocument.body.childNodes[0].innerHTML
来查看文本文件。var object = document.getElementById("data");
object.onload = function() {
var data = object.contentDocument.body.childNodes[0].innerHTML;
// use the data
};
text/plain
将 pre
标签放在 object
内部,所以 childNodes
在那里。 - 4castlefile://
类型的HTML文件来测试它。(它会认为有XSS攻击并抛出错误)。我必须从我的localhost
加载它才能进行测试。 - 4castle<object>
标签的 data
属性引用的文件必须是托管在与使用此 JavaScript 的 HTML 文件相同的服务器上的文件。否则,您需要为托管该文件的服务器配置 CORS,以允许其他服务器请求它。一旦您正确地托管文件,此代码将正常工作。 - 4castle[edit] Pay attention to the object line. especially the data="test.txt" portion of the object. If you do not create test.txt and add some text to the first line, the script will not work. [end edit]
function getObjectData()
{
//alert("getObjectData");
var myData = "";
var object = document.getElementById("data");
//get data inside object data
var myData = object.contentDocument.body.childNodes[0].innerHTML;
alert("myData => " + myData + " <= myData" );
}
#data{
height: 36px;
border: solid 1px red;
/*overflow: hidden;*/
}
<div class="main">
<object id="data" type="text/plain" data="test.txt"></object>
</div>
<br />
<button onclick="getObjectData()">Get Object Data</button>
object
元素来显示文本文档有什么作用,相较于使用iframe
元素呢?请参阅 https://developer.mozilla.org/en-US/docs/Web/HTML/Element/object 中的 "Permitted content"。 - guest271314<object ...> #document <html><body>[test.txt的内容]</body></html></object>
。 - rhynodegreatvar data = document.getElementByID("data").contentDocument.documentElement;
。 - guest271314