JavaScript:';textarea.value';不在IE工作?

JavaScript:';textarea.value';不在IE工作?,javascript,internet-explorer,innerhtml,Javascript,Internet Explorer,Innerhtml,几个小时前,我接到指示。下面的代码(再次感谢Mario Menger)在Firefox中很有魅力,但不幸的是,在Internet Explorer中什么也没有发生(到目前为止只测试了7个) 我已经尝试用“innerHTML”(仅适用于IE)替换“value”,但没有效果。有什么建议吗?TIA如果脚本位于页面顶部,则很可能是在页面完全加载之前运行的。因此,您试图引用的元素还不存在。不幸的是,Internet explorer、javascript和标记不适合一句话。为它编写脚本总是一件痛苦的事 无

几个小时前,我接到指示。下面的代码(再次感谢Mario Menger)在Firefox中很有魅力,但不幸的是,在Internet Explorer中什么也没有发生(到目前为止只测试了7个)


我已经尝试用“innerHTML”(仅适用于IE)替换“value”,但没有效果。有什么建议吗?TIA

如果脚本位于页面顶部,则很可能是在页面完全加载之前运行的。因此,您试图引用的元素还不存在。

不幸的是,Internet explorer、javascript和标记不适合一句话。为它编写脚本总是一件痛苦的事


无论如何,要调试,如果事件被调用,您可以通过放置
警报(“onblur工作!”)来尝试类似于中的行。可能会提醒您正在测试或更改的某些变量的值。

对我来说很好。完整的非工作测试用例

如果您是从本地文件系统运行页面,请确保允许JavaScript通过信息栏运行,启用“允许活动内容在我的计算机上的文件中运行”,或添加“Web标记”

您可能还希望仅在空/默认文本情况下使其变为灰色

编辑:好吧,这是eBay在那里发布的一个非常恶劣的页面,充满了疯狂的内容和劣质的脚本。它有一个
ErrorHandlerManager
功能,可以阻止您的问题被报告,页面上还有一些其他脚本错误。很好

奇怪的是,eBay似乎将其作为复杂的嵌套iFrame提供给IE,Firefox可以在一个文档中获取所有信息。无论是这种方式还是加载“htmlcommentbox”脚本的奇怪方式,都会导致在将注释框附加到页面之前运行它后面的水印脚本,从而导致尝试
getElementById
失败


我在脚本周围放置了一个
window.onload=function(){…}
wrapper,这使它能够工作。我不知道它是否会使用
窗口影响页面上的任何其他内容。尽管如此,onload
事件(有太多令人不快的中断脚本需要检查),但是如果是这样的话,总是会有
addEventListener
/
attachEvent

我已经将这里提到的脚本粘贴在主脚本的正下方;表格分别为。HTML也是由JS创建的。是的,正如您所料,IE中没有警报,但FF中没有警报,所以我将分别测试每个事件。这就是为什么我们使用像jQuery这样的框架。他们已经解决了绝大多数IE v.s.FF问题。哇,感谢你的努力,bobince(就像你的网站顺便提一下g)。您是在整个脚本(HTML评论框+水印)或仅水印周围放置了上述包装器?我能否仅通过IE实现这一点(通过有条件的评论)?你说“总是有addEventListener/attachEvent”是什么意思。如需澄清,请参阅以下页面:。当刷新一次时,模板被强制放入这些嵌套(讨厌的!g)iframe中。我从IE的第一次加载开始就使用另一个脚本来触发这个“嵌入”,这仅仅是因为CSS问题。我真正想说的是,水印脚本在FF中可以完美地工作,即使iframe构造出现…;-)我只是把它放在水印的周围。这给了外部htmlcommentbox脚本加载时间;在IE中,它不像Firefox那样同步加载。我不完全确定是否保证插入DOM的脚本元素会延迟加载,直到加载完成,不过。。。您还可以尝试丢失hcb脚本加载器,只需
文档。编写
​正在替换脚本标记。
window.onload=function(){…}
成功了!你是个天才,博宾斯!非常感谢,Gn8
var foo = document.getElementById('HCB_textarea');
var defaultText = 'Your message here';
foo.value = defaultText;
foo.style.color = '#888';
foo.onfocus = function(){
    foo.style.color = '#000';
    if ( foo.value == defaultText ) {
        foo.value = '';
    }
};
foo.onblur = function(){
    foo.style.color = '#888';
    if ( foo.value == '' ) {
        foo.value = defaultText;
    }

};