4

我说的是弹出的这些对话框之一:http: //jquerymobile.com/test/docs/pages/page-dialogs.html

(手机短网址http://bit.ly/KhCGVD

单击“打开对话框”——在该对话框中,除非链接中使用了“data-ajax="false"”,否则 iOS 中的任何内容都无法复制。(在安卓上运行良好)

把 '-webkit-user-select: auto!important;' (或“文本”而不​​是“自动”)什么都不做。

添加 javascript 'document.documentElement.style.webkitTouchCallout = "auto";' 什么也没做。

我迫切希望完成这项工作,因为我已经围绕副本在 iOS 和 android 上都可以工作的假设构建了一个完整的东西,但直到它完成才在 iOS 中进行测试:(。

任何帮助将不胜感激,谢谢。

编辑:在 4.3.5 -- 4.3.2 -- iOS 5.1 上测试 -- 不工作

4

1 回答 1

5

恐怕我无法为您的问题提供简单的答案(例如在 config 或 init 中添加一些内容),但我希望当前的解决方案就足够了。


问题

问题在于这个框架的代码很深。首先,我们有一个jquery.mobile.dialog.js文件,其中有一行:

    $el.bind( "vclick submit", function( event ) {
               // code
            })

正如您在此处看到的,我们将绑定vclick添加到$el - 整个对话框容器。

它自己的事件vclick是由vmouse.js中的 jQuery Mobile 生成的,在挖掘之后我设法检测到实际问题出现在哪里:

    $( this ).bind( realType, dummyMouseHandler );

在某些浏览器(即 Opera Mini)中,需要此行才能使事件工作(如此行上方的注释文本中所述)。


解决方案

所以,这是解决方案之一,打开文件 jquery.mobile.vmouse.js 并注释掉行

    $( this ).bind( realType, dummyMouseHandler );

我已经在 iPad 上对其进行了测试,并且在那个小补丁之后可以使用复制功能。

于 2012-05-15T09:48:51.250 回答