我正在创build一个jQuery插件。 如何在Safari中使用Javascript获得真实的图像宽度和高度? 以下使用Firefox 3,IE7和Opera 9: var pic = $("img") // need to remove these in of case img-element has set width and height pic.removeAttr("width"); pic.removeAttr("height"); var pic_real_width = pic.width(); var pic_real_height = pic.height(); 但是在Webkit浏览器(如Safari和Google Chrome)中,值为0。
这似乎只是与Safari有关的问题。 我已经尝试过4在Mac和3在Windows上,仍然没有运气。 我试图加载一个外部的HTML文件,并执行嵌入的JavaScript。 我试图使用的代码是这样的: $("#myBtn").click(function() { $("#myDiv").load("trackingCode.html"); }); trackingCode.html看起来像这样(现在简单,但将展开一次/如果我得到这个工作): <html> <head> <title>Tracking HTML File</title> <script language="javascript" type="text/javascript"> alert("outside the jQuery ready"); $(function() { alert("inside the jQuery ready"); }); </script> </head> <body> </body> </html> 我在IE(6&7)和Firefox(2&3)中看到了两条警报消息。 但是,我无法看到Safari中的消息(我需要关心的最后一个浏览器 – 项目要求 – 请不要进行火焰战争)。 为什么Safari会忽略trackingCode.html文件中的JavaScript? 最终,我希望能够将JavaScript对象传递给此trackingCode.html文件,以便在jQuery就绪调用中使用,但是我希望确保在所有浏览器中都可以使用这个对象。
自升级到iOS 6以来,我们看到Safari的Web视图冒险缓存$.ajax调用。 这是在PhoneGap应用程序的上下文中,因此它使用Safari WebView。 我们的$.ajax调用是POST方法,我们将缓存设置为false {cache:false} ,但仍然发生这种情况。 我们尝试手动添加TimeStamp到标题,但没有帮助。 我们做了更多的研究,发现Safari只是返回具有静态功能签名的Web服务的缓存结果,并且不会因呼叫而改变。 例如,想象一个叫做如下的函数: getNewRecordID(intRecordType) 这个函数一次又一次地接收相同的输入参数,但是它返回的数据应该每次都不一样。 必须在苹果急于使iOS 6 zip令人印象深刻,他们对缓存设置太高兴了。 有没有其他人在iOS 6上看到这种行为? 如果是这样,究竟是什么原因造成的呢? 我们找到的解决方法是修改函数签名是这样的: getNewRecordID(intRecordType, strTimestamp) 然后总是传递一个TimeStamp参数,并在服务器端丢弃该值。 这可以解决这个问题。 我希望这能帮助像我这样在这个问题上花费15个小时的其他可怜的灵魂!
我试图在Safari中使用JavaScript来模拟键盘事件。 我试过这个: var event = document.createEvent("KeyboardEvent"); event.initKeyboardEvent("keypress", true, true, null, false, false, false, false, 115, 0); 还有这个: var event = document.createEvent("UIEvents"); event.initUIEvent("keypress", true, true, window, 1); event.keyCode = 115; 但是,在尝试这两种方法之后,我遇到了同样的问题:代码执行后,事件对象的keyCode /属性设置为0 ,而不是115 。 有谁知道如何可靠地创建和发送在Safari中的键盘事件? (如果可能的话,我宁愿用普通的JavaScript来实现它。)