我知道一些Javascript,但只是意识到我对跨浏览器问题知之甚少。令人讨厌的小事情,比如IE中事件回调中的this
对象(如xhr.onreadystatechange = function () { ... }
中所述),不是指应用函数的对象,而是指window
,这对于{{1}}来说并不完全有用
有an impressive and comprehensive-looking list of differences here on SO。
还有一个图书馆能够涵盖这些令人讨厌的跨浏览器问题而不会向您推销整个生活方式以及带有幻灯片效果的圆角吗?我知道jQuery是伟大的(模块化,我知道,UI是额外的;我打赌其他人也很棒),但我正在寻找一些精益,更接近根源的东西。只做最小化并消除肮脏。不必将DOM包裹在糖中。
更新
感谢大家的建议。我要看看MyLib,microJS,Ender和Sizzle。 GWT虽然肯定是跨浏览器,但我认为并不是一种轻量级方法,但绝对是一种有趣的方法。
答案 0 :(得分:3)
答案 1 :(得分:3)
jQuery不是模块化的 - 它是全有或全无。如果您想要一个可以修剪到最低要求的可靠的跨浏览器库,则很难超越MyLibrary:http://www.cinsoft.net/mylib.html。
名称“MyLibrary”表示当您下载并自定义它时,它将成为您的库。
它绝对坚固,快速且极其模块化。您可以只使用您想要的位并删除任何不必要的内容。
BTW,像jQuery这样的许多库并不是真正的“跨浏览器”,它们是多浏览器 - 它们拥有一组有限的浏览器,它们支持并且不关心其余的浏览器。另一方面,MyLibrary被写成真正的跨浏览器。它还提供了出色的功能检测快捷方式,因此您可以轻松编写具有后备功能的强大代码。答案 2 :(得分:3)
“最小的跨浏览器Javascript库”+“我正在寻找精益,更接近根源的东西”
我立刻想到了MyLib 您甚至可以使用this online tool构建自己的自定义版本。
答案 3 :(得分:1)
我认为你应该看一下Ender Dustian Diaz和Jacob Thornton Twitter工作。
Ender不是传统意义上的JavaScript库。所以不要 赶紧试图用Ender取代jQuery或MooTools ......它就是这样 不行......但是!你可以从Ender建立一个库。 你应该。现在。
这是因为:Ender是一个开放的,功能强大的微到宏的API 编写自己的自定义JavaScript库;它包装了应用程序 不可知,独立的模块变得光滑,直观,熟悉 界面,所以你不必。
答案 4 :(得分:0)
JavaScript中this
的问题是,对于那些不习惯于它总是获得上下文值的事实或换句话说它总是指向对象的人来说,它可能有点混乱。是在执行代码的当前上下文中。
在某些事件,间隔等情况下,它指向窗口是绝对正常的,因为JavaScript中的LOT(可能太多)属性附加到窗口对象。
至于哪个JS库用于你的工作...如果你不想整体使用jQuery,那么总是最重要的部分来处理DOM中对象的选择并且非常重要用于跨浏览器兼容性。
它被称为 Sizzle ,可以找到here。它不像jQuery那样提供花哨的东西,但它很小,并提供了一种很好的跨浏览器方式来选择页面上的内容。
答案 5 :(得分:-1)
你可以看看GWT ..但它确实也为你提供了一种生活方式 - 一种Java开发环境。但这也带来了一个调试器,一个合适的IDE,更容易的OO,它编译为优化的跨浏览器javascript等。你可以随时混合和匹配你认为合适的原生JavaScript。