使用Javascript onmouseover / onmouseout的Webview不起作用

时间:2013-06-09 21:07:04

标签: google-tv

对于我的硕士论文,我开发了一个手势识别应用程序,它使用kinect将鼠标光标移动到索尼谷歌电视盒内。它对我的原生书面应用程序非常有效,但是为了能够与webviews一起使用它,webview需要在元素onmouseover和onmouseout事件上激活javascript函数。

即:

<input type="button" value="Test" onClick="AndroidFunction.onGenericMotionEventHover();" onMouseOver="AndroidFunction.onGenericMotionEventHover();" onMouseOut="AndroidFunction.onGenericMotionEventNoHover();" style="width:200px;height:200px;" />

当我按下按钮时,会调用javascript函数(相应的是它的本机实现)。但onMouseOut和onMouseOver无效。

是否有任何修复/可能的解决方案?

提前致谢,

塞巴斯蒂安

编辑:这些活动适用于Android版Google Chrome浏览器,因此它应该以某种方式在Webview中运行,不应该吗?

2 个答案:

答案 0 :(得分:0)

让这种东西在webview中工作有点棘手 - 你需要确保你连接javascript等等。可以使用Apache Cordova aka Phonegap进行快速测试。

在那里运行你的javascript,如果它不起作用,它将无法在电视上运行。如果是,那么您只需要修改WebView的调用。然后,您可以在您的网络设置中启用JavaScript。有关详细信息,请参阅http://developer.android.com/reference/android/webkit/WebView.html

答案 1 :(得分:0)

太容易了!只需要对代码进行一些更改。你需要添加一个动态事件作为“touchstart”和“touchend”作为下面给出的代码:

在html页面上添加脚本标记。

<input type="button" value="Test" id="btnTouch" style="width:200px;height:200px;" />


<script >
        var prevent=false;
       document.getElementById('btnTouch').addEventListener("touchstart", function(e)
        {
                if(prevent){e.preventDefault();}
                AndroidFunction.doSomeThingOnTouchEvent();
        },false);
       document.getElementById('btnTouch').addEventListener("touchmove", function(e)
        {
                if(prevent){e.preventDefault();}
                AndroidFunction.doSomeThingOnTouchMove();
        },false);
        document.getElementById('btnTouch').addEventListener("touchend", function(e)
        {
                AndroidFunction.doSomeThingOnTouchUp();
        },false);
</script>

我认为它可以帮到你! :)