我正在开发一个AJAX网站。现在我已经遇到了标准JavaScript和微软JavaScript方言之间的一些差异。JavaScript可能重写自己吗?
For examle .textContent(standard)vs .text(microsoft) 我可以创建两个文件,一个用于标准浏览器,另一个用于微软浏览器,但如果我做了更改,我需要这样做两次,所以,这就是不是一个理想的选择。 如果在每次遇到.textContent时发出if语句,似乎也不是最佳解决方案。
所以,我thinkng关于基于脚本的解决方案,我想出了这样的事情:
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版,它似乎 做它的工作。 (从即标准的翻译似乎并没有工作, 标准的浏览器似乎执行,而不是不变的代码)
的问题是,这仅适用于行脚本,而不是JS源文件 脚本。是否有可能为客户端的JavaScript文件 执行此转换脚本?
我可以做用户代理(服务器端)的支票,但我宁愿做 在方言本身的检查,因为一些浏览器支持“标识为” 功能,如果他们认同自己是即他们可能会收到他们不明白的方言 。
有趣的元编程方法...专业提示:要在更大规模上正确执行此操作,您需要的不仅仅是正则表达式,还需要解析器。为什么不使用解决这些问题的众多库/框架之一? – delnan 2010-10-31 15:51:55