0

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

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

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

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

任何帮助,将不胜感激。

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

我已经尝试过重新放置警报

namedFunc(result.text);

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

1 回答 1

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);

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

于 2013-10-16T09:19:57.110 回答