2013-03-27 50 views
4

我试过发布这个问题之前,并没有意识到当时我遇到的问题是来自使用jQuery 1.3.0库。

我试图创建一个没有用户交互的对话框在使用jQuery手机的页面上。它适用于FireFox,但在所有的Webkit浏览器中都失败,包括Safari,Mobile Safari和Chrome。

这里的问题的例子:http://jsfiddle.net/fskirschbaum/2YTwE/

$.mobile.changePage('#dialog' , { transition:"pop", role:"dialog" }); 

我已经尝试了几种不同的方式让这件事才能正常工作,我觉得我骂我的头靠在墙上。如果你把库的基础改为1.2.0,它就可以工作,所以它似乎是1.3.0的问题,但我没有看到其他人似乎有这个问题。

编辑:我已经尝试将这个附加到几个事件没有任何成功,包括:pagecreate,pageinit,pageload等。这似乎没有帮助。我还要指出,这似乎是这个库崩溃到另一个库的问题,在只有jquery和jquery mobile的vanilla页面上调用,我可以使用1.3库来使用它,但不能在jsFiddle或我的环境中使用(我打电话给其他许多库,比如jQueryUI和其他库,我试图调整它们被调用的顺序。)

有没有人有任何建议?

+0

尝试将其绑定到事件,例如, (''pageshow',function(){$ .mobile.changePage('#dialog',{transition:“pop”,role:“dialog”}); }); $('#home' '。 – Omar 2013-03-27 22:09:16

+0

感谢您的建议,但我已尝试将其绑定到几个不同的事件而没有成功。你可以在jsfiddle中使用webkit浏览器在我的帖子中链接,看看它不起作用。 – fskirschbaum 2013-03-28 02:10:35

回答

1

所以,它似乎与webkit渲染和某些其他库的问题有关。

pageshow中包装函数对我的环境不起作用,但是将它封装在pagecreate did中,这是在createPage之后调用的事件。我还没有确定为什么会发生这种情况,但它确实有效。

http://jsfiddle.net/fskirschbaum/pKw2A/

此解决方案,但是,在Firefox/Gecko渲染断裂,因此,该功能需要被包裹在一个浏览器检查,以得到它的工作。显然,这不是最优雅的解决方案,但它是一个无与伦比的解决方案。

希望这会帮助其他人有相同的问题。

0

请致电$.mobile.changePage如下。

$(document).on('pageshow', '#home', function(){ 
    $.mobile.changePage('#dialog'); 
}); 
+0

然而,感谢您的建议,如果您使用上面的jsFiddle使用基于webkit的浏览器进行尝试,您会发现它无法按预期工作。我试着用几个事件调用这个方法,它根本不会触发。 http://jsfiddle.net/fskirschbaum/ktM6Z/ – fskirschbaum 2013-03-28 13:48:44

+0

它在我的网络工具包浏览器(chrome)中为我工作,我将检查小提琴为什么不在第一次加载。如果你导航到第二页,并再次回到第一页,那么你可以看到它被解雇.... !!!! – 2013-03-28 14:34:52

+0

当你回到页面时,我看到它会触发,尽管这是我正在寻找的行为。我还发现,我可以在用户输入时触发这一点,这似乎是一个问题,当文档初始化负载让对话框在没有用户交互的情况下触发时。 – fskirschbaum 2013-03-28 15:05:25

相关问题