钛合金Webview Ti.App.fireEvent不工作

时间:2013-10-11 14:17:05

标签: javascript android webview titanium titanium-alloy

我无法使用Alloy从WebView与Titanium进行通信?它似乎在过去的Ti.App.fireEvent()中有效,但在一个新的Alloy项目中它不起作用。 是的,我已阅读这些文档,但它们似乎已过时:https://wiki.appcelerator.org/display/guides/Communication+Between+WebViews+and+Titanium 使用合金时,没有app.js文件 - 只有alloy.js文件。 如果有人在合金中有这样的例子,这将是伟大的! 这是我尝试过的。

webview.html

  <html>
  <head>
    <script type="text/javascript">
    function fire(e){
      alert("Before Ti.App.fireEvent");
      Ti.App.fireEvent("fromWebview",{});
      alert("After Ti.App.fireEvent");
    }
    </script>
  </head>
  <body>
  <a href="#" onClick="fire()">Click this link to execute the fire() function</a>
  </body>
</html>

index.xml

<Alloy>
    <Window id="w_history">
            <WebView id="webview" url="/webview.html" />
    </Window>
</Alloy>

index.js

Ti.App.addEventListener('fromWebview',function(e){
  alert("Clicked from Web");
});

$.w_history.open();

f我在Ti.App.fireEvent触发之前运行代码只有死亡警报 - 之后的警报没有?我想这意味着Ti.App.fireEvent没有被执行并且破坏了函数?

我整天都被困在这!任何帮助,将不胜感激! 感谢

2 个答案:

答案 0 :(得分:0)

我将您的代码复制到index.js,index.xml和assets / webview.html中,并在Android和iOS模拟器上运行它。所有警报都被触发,因此您的错误必须在其他地方。

答案 1 :(得分:0)

这似乎已经有效......在HTML文件中我必须在函数内定义var Ti = window.parent.TI

<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<style> html, body { margin: 5px; padding: 0px; } p {margin: 0; text-indent: 9.0pt;font-size: 13pt;line-height: 15pt;}sup{vertical-align: super;color: black;font-weight:bold;margin-right:3px;font-size: 8pt;}</style>
    <script type="text/javascript">
    function fire(e){
    var Ti = window.parent.Ti;
    alert("Before Ti.App.fireEvent");
      Ti.App.fireEvent("fromWebview",{});
      alert("After Ti.App.fireEvent");
    }
    </script>
  </head>
  <body>
  <a href="#" onClick="fire()">Click this link to execute the fire() function in the embedded script of this local page</a>
  </body>
</html>