钛合金 Webview Ti.App.fireEvent 不工作
Posted
技术标签:
【中文标题】钛合金 Webview Ti.App.fireEvent 不工作【英文标题】:Titanium Alloy Webview Ti.App.fireEvent NOT working 【发布时间】:2013-10-19 16:04:02 【问题描述】:我无法使用 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 没有被执行并破坏了函数?
我一整天都被困在这上面!任何帮助,将不胜感激! 谢谢
【问题讨论】:
【参考方案1】:我将您的代码复制到 index.js、index.xml 和 assets/webview.html 并在 android 和 ios 模拟器上运行。所有警报都已触发,因此您的错误必须在其他地方。
【讨论】:
【参考方案2】:这似乎让它工作了......在 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;supvertical-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>
【讨论】:
以上是关于钛合金 Webview Ti.App.fireEvent 不工作的主要内容,如果未能解决你的问题,请参考以下文章