要在executeScript内部调用的方法,如下所示。
function any-method(){
alert("method called");
}
inAppBrowserRef.executeScript({
code: "any-method()"
},executeScriptCallBack);
答案 0 :(得分:1)
您作为code
的{{1}}参数传递的字符串是在InviewBrowser窗口内打开的Webview范围内解析和执行的,该Webview与您的Webview完全不同Cordova应用程序正在运行。因此,您不能只在Cordova应用程序Webview和InappBrowser Webview之间共享代码。
在您已说明的简单情况下,需要将函数内联到executeScript
参数字符串中:
code
注意:
inAppBrowserRef.executeScript({
code: "(function(){ \
alert(\"method called\"); \
})();"
},executeScriptCallBack);
运算符将其连接起来要在Cordova应用程序Webview的上下文中显示警报,请使用+
的回调函数参数,例如:
executeScript
如果要调用的函数已经存在于正在加载到InappBrowser中的页面中,那么您当然可以调用它并从中返回值:
iab_page.html:
var a = 1,
b = 2;
inAppBrowserRef.executeScript({
code: "(function(){ \
return "+a+"+"+b+"; \
})();"
},function(values){
var result = values[0];
alert("Result: "+result); // Result: 3
});
Cordova应用代码:
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<script type="text/javascript">
function getResult(x, y){
return x + y;
}
</script>
<h1>Inappbrowser content page</h1>
</body>
</html>