我正在开发一个 AJAX 网站。现在我遇到了标准 JavaScript 和 Microsoft 的 JavaScript 方言之间的一些差异。
例如 .textContent(标准)与 .text(微软) 我可以制作两个文件,一个用于标准浏览器,一个用于 Microsoft 浏览器,但如果我进行更改,我需要进行两次,因此,这不是一个理想的选择。 每次遇到 .textContent 时都放置 if 语句似乎也不是最佳解决方案。
所以,我在考虑一个基于脚本的解决方案,我想到了这样的事情:
function translate_to_msie_dialect(){
var s = document.getElementsByTagName("script");
var l = s.length;
var i;
for ( i = 0 ; i < l ; i ++ ) {
var src = s[i].text;
s[i].text = src.replace(/.textContent/g, ".text");
}
}
我已经在 Internet Explorer 版本 8 上测试了这段代码,它似乎 做它的工作。 (从 ie 翻译成标准似乎不起作用, 标准浏览器似乎改为执行未更改的代码)
问题是,这只适用于内联脚本,不适用于 js 源文件 脚本。是否可以为 javascript 文件执行此转换脚本 客户端?
我可以检查用户代理(服务器端),但我宁愿这样做 检查方言本身,因为某些浏览器支持“识别为” 功能,如果他们将自己标识为 ie,他们可能会进入 他们听不懂的方言。
最佳答案
为什么不从其他人已经经历过的头痛中受益呢?您不是第一个遇到这些跨浏览器问题的人。请使用类似 jQuery 的库,它会为您修复这些问题。然后你可以专注于更重要的事情:)
关于javascript - JavaScript 有可能重写自己吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4063782/