Window.Open无法在Phonegap上的Function中工作

时间:2013-10-16 02:09:34

标签: javascript html dom cordova

我正在尝试为我正在处理的项目使用QR代码扫描程序插件,基本上我正在修改下面发布的示例,以便不仅扫描代码并将字符串值输出到页面,我实际上希望它使用InAppBrowser以物理方式打开链接。

现在虽然我添加了函数(据我所知)InAppBrowser没有被调用,但是如果我在尝试扫描后单击索引页面中预先嵌入的链接,它会简要显示我尝试通过扫描加载的页面,然后加载预嵌入链接的内容(如果有意义的话)。

原创演示https://github.com/wildabeast/BarcodeDemo

我的叉子https://github.com/desrat/BarcodeDemo

任何帮助都将不胜感激。

编辑:Jonus解决方案效果很好,但如果我想将该功能移出警报回调并立即打开浏览器该怎么办?

我已尝试使用

重新发出提醒
namedFunc(result.text);

function(){namedFunc(result.text);};

1 个答案:

答案 0 :(得分:1)

当您将namedFunc(result.text)作为回调传递时,会立即调用该函数,实际上会传递其结果(undefined)。

尝试:

navigator.notification.alert(result.text, namedFunc.bind(null, result.text), 'Scan Result', 'ok')

或者:

navigator.notification.alert(result.text, function() {namedFunc(result.text);}, 'Scan Result', 'ok')

更新:

你的第二个问题很难回答。使用namedFunc(result.text);应该是正确的。经过一些测试(使用iOS),在我看来,InAppBrowser已打开但未显示,因为我可以使用Safari检查打开的网站。这很奇怪,我不知道原因是什么。也许它与关闭条形码扫描仪有关。

但是你可以使用超时来修复它:

window.setTimeout(namedFunc.bind(null, result.text), 1000);

或者您可能更喜欢:

window.setTimeout(function() {namedFunc(result.text);}, 1000);

这肯定不是一个非常好的解决方案,因为用户必须在浏览器打开之前等待一秒钟,我甚至不能保证一秒钟就足够了(例如在较慢的设备上),所以它有点冒险。 / p>