Cordova 如何从inappbrowser的executeScript方法内部调用方法
要在executeScript内调用的方法,如下所示Cordova 如何从inappbrowser的executeScript方法内部调用方法,cordova,inappbrowser,Cordova,Inappbrowser,要在executeScript内调用的方法,如下所示 function any-method(){ alert("method called"); } inAppBrowserRef.executeScript({ code: "any-method()" },executeScriptCallBack); 作为代码参数传递给executeScript的字符串将在InappBrowser窗口内部打开的Webview范围内解析和执行,该窗口与运行Cordova应用程序的W
function any-method(){
alert("method called");
}
inAppBrowserRef.executeScript({
code: "any-method()"
},executeScriptCallBack);
作为代码参数传递给executeScript的字符串将在InappBrowser窗口内部打开的Webview范围内解析和执行,该窗口与运行Cordova应用程序的Webview完全不同。因此,您不能仅在Cordova app Webview和InApp Browser Webview之间共享代码 在所示的简单示例中,需要将函数内联到代码参数字符串中:
inAppBrowserRef.executeScript({
code: "(function(){ \
alert(\"method called\"); \
})();"
},executeScriptCallBack);
注:
反斜杠转义的行尾使您能够跨多行拆分字符串,而无需将其与+运算符连接
字符串中的任何双引号都必须反斜杠转义
这将导致警报显示在InappBrowser网络视图中,而不是Cordova应用程序网络视图中
要在Cordova app Webview的上下文中显示警报,可以使用executeScript的回调函数参数,例如:
var a = 1,
b = 2;
inAppBrowserRef.executeScript({
code: "(function(){ \
return "+a+"+"+b+"; \
})();"
},function(values){
var result = values[0];
alert("Result: "+result); // Result: 3
});
如果正在调用的函数已存在于加载到InApp Browser的页面中,则当然可以调用它并从中返回值:
iab_page.html:
<!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>
var a = 1,
b = 2;
var inAppBrowserRef = cordova.InAppBrowser.open('iab_page.html', '_blank');
inAppBrowserRef.addEventListener('loadstop', function (e) {
inAppBrowserRef.executeScript({
code: "getResult("+a+","+b+")"
},function(values){
var result = values[0];
alert("Result: "+result); // Result: 3
});
});