2013-10-11 57 views
1

我無法使用合金從WebView與Titanium進行通信?它似乎在過去的Ti.App.fireEvent()中起作用,但是在一個新的Alloy項目中它不起作用。 是的,我已閱讀這些文檔,但它們似乎已過時:https://wiki.appcelerator.org/display/guides/Communication+Between+WebViews+and+Titanium 使用合金時,沒有app.js文件 - 只有一個alloy.js文件。 如果有人在ALLOY中有這樣的例子,這將是偉大的! 這是我試過的。鈦合金Webview Ti.App.fireEvent不工作

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 I運行代碼的Ti.App.fireEvent閃光之前只有死路一條警報 - 之後的警報不?我猜這意味着Ti.App.fireEvent沒有被執行並且會破壞該函數?

我一直堅持這一整天!任何幫助,將不勝感激! 謝謝

回答

0

我將你的代碼複製到index.js,index.xml和assets/webview.html並在Android和iOS模擬器上運行它。所有警報都被解僱了,所以你的錯誤必須在別的地方。

0

這似乎已經得到它的工作...在HTML文件中,我不得不定義函數內部的變種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>