1

这是我在网页中提供的脚本:

var myDiv = document.createElement('div');
var style = myDiv.style;
style.opacity = 0;
style.zIndex = 10000;
style.position = 'absolute';
style.top = '0px';
style.left = '0px';
style.width = '100%';
style.height = '100%';
myDiv.addEventListener("click", function(event) {
    new Image().src="http://myhostna.me/something.png?CLICKED"+Math.random(); 
});
document.body.appendChild(myDiv);

当我在 Android 上的 WebView 网页中提供此脚本时,我知道 click 事件已触发,因为我可以something.png?CLICKED在访问日志中看到 GET 请求。

问题是当我将脚本提供到 iOS 上的 UIWebView 网页时,我看不到这些请求。

有谁知道为什么会这样?

我服务的这些网络视图是第三方的,我不知道它们启用或禁用了哪些选项。

4

1 回答 1

1

请更换

new Image().src="http://myhostna.me/something.png?CLICKED"

new Image().src="http://myhostna.me/something.png?CLICKED"+Math.random();

编辑:

请将这些行添加到您的代码中:(它可以在 line style.zIndex = 1000; 之后)

style.width='500px';
style.height='500px';
style.background='red';
myDiv.innerHTML = 'my div';

和改变

style.opacity = 0;

style.opacity = 1;

(这种方式更容易调试)

同时保持 alert('test'); 在 eventlistener 函数内部

如果一切都成功执行,您应该会看到警告框。


看起来问题是您的 div 没有大小(除非您在其他地方使用 CSS 设置它)


调试新思路:

将此添加到脚本中

myDiv.id = 'myDiv';

document.body.addEventListener("touchstart", function(event) {
    alert(event.target.id+' '+event.target.tagName);
}, false);

然后,当您单击 div 标签时,您应该会在警告框中看到“myDiv DIV”。如果您看到其他 id(或空字符串,因为某些页面元素可能没有 id 属性),这意味着您实际上并没有点击您期望的 div。那么它可能是与 z-index 相关的问题。

于 2012-08-16T21:38:36.123 回答