【问题标题】:JavaScript: 'textarea.value' not working in IE?JavaScript:'textarea.value' 在 IE 中不起作用?
【发布时间】:2010-04-13 20:41:28
【问题描述】:

几个小时前,我收到了how to style a specific textarea with JS 的指示。下面的一段代码(再次感谢 Mario Menger)在 Firefox 中运行起来就像一个魅力,但不幸的是,在 Internet Explorer 中什么也没有发生(目前仅测试了 7 个)。

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;
    }

};

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

【问题讨论】:

    标签: javascript internet-explorer innerhtml


    【解决方案1】:

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

    【讨论】:

    • 我已将此处提到的脚本粘贴在主脚本的正下方;形式分别。 HTML也是由JS创建的。
    【解决方案2】:

    不幸的是,Internet explorer、javascript 和标记不能放在一句话中。编写脚本总是很痛苦。

    无论如何调试,如果事件被调用,则可以尝试通过将alert("onblur works!"); 像行放入。也许会提醒您正在测试或更改的某些变量的值。

    【讨论】:

    • 是的,正如您所料,IE 中没有警报但 FF 中没有警报,所以我将分别测试每个事件。
    • 这就是我们使用像 jQuery 这样的框架的原因。他们已经弄清楚了绝大多数的 IE vs. FF 已经出问题了。
    【解决方案3】:

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

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

    您可能还希望仅在空/defaultText 情况下使其变为灰色。

    编辑:好的,那是 eBay 正在吐出的一个非常糟糕的页面,里面充满了疯狂的破碎内容和笨拙的脚本。它有一个ErrorHandlerManager 可以阻止您的问题被报告,以及页面上的一些其他脚本错误。不错。

    奇怪的是,eBay 似乎将其作为复杂的嵌套 iframe 提供给 IE,而 Firefox 将所有内容都放在一个文档上。无论是这种方式还是加载“htmlcommentbox”脚本的奇怪方式,都会导致您的水印脚本在评论框附加到页面之前运行,从而导致尝试getElementById 失败。

    我在您的脚本周围放置了一个 window.onload= function() { ... } 包装器,这使它起作用。我不知道它是否会干扰页面上可能使用window.onload 事件的任何其他内容(有太多令人不快的破坏脚本需要检查),但如果是这样,总会有addEventListener/attachEvent

    【讨论】:

    • 哇,谢谢你的努力,bobince(顺便说一下g)。您是否将提到的包装器放在整个脚本(HTML 注释框 + 水印)或仅水印?我可以只为 IE 实现这一点(通过条件注释)吗?你是什​​么意思说“总是有 addEventListener/attachEvent”。为了澄清:页面resp。刷新一次时,模板会强制进入这些嵌套的(讨厌的!g)iframe。由于 CSS 问题,我使用另一个脚本从第一次加载 IE 时触发这个“嵌入”。
    • 我真正想说的是,水印脚本在 FF 中可以完美运行,即使 iframe 构造进来... ;-)
    • 我只是把它放在水印添加周围。这给了外部 htmlcommentbox 脚本加载时间;在 IE 中,它不像在 Firefox 中那样同步加载。我不完全确定是否保证插入 DOM 的脚本元素会延迟 onload 直到它完成,但是……您也可以尝试丢失 hcb 脚本加载器,而只使用 document.write​ing 脚本标记。跨度>
    • window.onload = function() { ... } 做到了!你真是个天才,鲍比斯!非常感谢和 Gn8
    猜你喜欢
    • 1970-01-01
    • 2017-11-16
    • 2012-01-20
    • 2016-01-21
    • 2015-06-17
    • 2012-09-09
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    相关资源
    最近更新 更多