jquery 1.6.2适用于Android 2.1模拟器,但不适用于三星Galaxy S.

时间:2011-08-05 13:45:02

标签: javascript jquery android

有没有其他人遇到过jquery-1.6.2.min.js似乎根本无法在运行Android 2.1的三星Galaxy S上运行的问题?如果是这样,有没有人知道我可以做什么修改才能将它用于这个设备?

我最近开始开发我今年早些时候制作的基于javascript的网站的移动版本。一切都很顺利,一切似乎都适用于各种各样的Android模拟器以及我自己的三星Galaxy S2。但是当我在运行标准Android 2.1的三星Galaxy S1上测试网站时,我的所有javascript代码似乎都被打破了。所以我再次在Android 2.1和Galaxy Tab的模拟器上再次测试它(使用默认的WebKit浏览器),并且那些网站工作得很好。

我尝试了很多解决方案并在网上不停地搜索标准Android 2.1和Galaxy S发布之间的差异,直到我决定将我使用的Jquery版本从1.6.2降级到1.4.2。这立即解决了我的问题。但是,由于jquery对移动设备的改进,我仍然希望能够使用1.6.2。

提前致谢。

编辑11月5日:

Manuel Holzhauser指出,在jQuery 1.6.2脚本中用“//”替换“//”可以解决问题。它似乎与两个正斜杠和双引号的组合有关,因为后者和“/ *在脚本中使用都没有问题。

作为参考,单个出现“//”的代码片段为:

// Main method
ajax: function( url, options ) {

    var // Create the final options object 
    s = jQuery.ajaxSetup( {}, options ), // (...)

    // Remove hash character (#7531: and string promotion)
    // Add protocol if not provided (#5866: IE7 issue with protocol-less urls)
    // We also use the url parameter if available
    s.url = ( ( url || s.url ) + "" ).replace( rhash, "" ).replace( rprotocol, ajaxLocParts[ 1 ] + "//" );

    // (...)

}

2 个答案:

答案 0 :(得分:4)

我们遇到了完全相同的问题,但我找到了解决方案!

您必须在压缩版本中将"//"替换为'//'

它在功能上没有任何改变,但它可以在您的手机上运行!

答案 1 :(得分:0)

我会尝试在面对新设备或遇到问题时运行jQuery单元测试(http://docs.jquery.com/Qunit)