以下脚本在Firefox中正常工作但在IE 8中崩溃时出现错误“未知运行时错误”。
YUI().use('node', function (Y) {
if (Y.one('#testel') == null) {
Y.one('head').append(Y.Node.create('<script id="testel" />'));
}
Y.one('#testel').set('text', 'Wish this would work in IE!');
console.log( Y.one('#testel').get('text') );
});
我在IE中尝试过类似的事情:
Y.one('#testel').set('innerHtml', 'Wish this would work in IE!');
Y.one('#testel').set('html', 'Wish this would work in IE!');
Y.one('#testel').setContents('Wish this would work in IE!');
唯一不同的是它有时会提供更有用的错误“对方法或属性访问的意外调用。”,这使我认为在IE中无法更改脚本标记的文本?
在搜索时,我在处理IE中的表元素时发现了很多对上述问题的引用,但在这些情况下的解决方法似乎并不适用于脚本标记。
有没有办法在IE中完成上述操作? (我只在IE 8中对此进行了测试,但我认为问题在6,7中是相同的。)
谢谢!
答案 0 :(得分:0)
这是一个解决问题的工作,并在IE 8中工作(尚未检查6,7)。
您似乎只能在创建脚本标记时设置文本,因此我不会尝试像问题中的代码一样更新文本,而是在我想要更改文本时随时删除并重新创建脚本标记(和这也适用于FF。
例如:
YUI().use('node', function (Y) {
var writeToScript = function(text) {
if (Y.one('#asdf') != null)
Y.one('#asdf').remove();
Y.one('head').append(Y.Node.create("<script id='asdf'>"+ text + " </script>"));
}
writeToScript("Hello there!");
console.log( Y.one('#asdf').get('innerHTML') );
writeToScript("How are you?");
console.log( Y.one('#asdf').get('innerHTML') );
writeToScript("Goodbye");
console.log( Y.one('#asdf').get('innerHTML') );
});
但是,如果有人能够解释为什么设置文本不能按照问题中的说明工作,或者如果你有另一种方法可以在不删除/重新添加的情况下完成此操作(这对性能有害吗?),请添加你的答案我会投票!!这项工作使得这不那么紧迫,但我仍然很好奇!!