我正在尝试为我正在处理的项目使用QR代码扫描程序插件,基本上我正在修改下面发布的示例,以便不仅扫描代码并将字符串值输出到页面,我实际上希望它使用InAppBrowser以物理方式打开链接。
现在虽然我添加了函数(据我所知)InAppBrowser没有被调用,但是如果我在尝试扫描后单击索引页面中预先嵌入的链接,它会简要显示我尝试通过扫描加载的页面,然后加载预嵌入链接的内容(如果有意义的话)。
原创演示https://github.com/wildabeast/BarcodeDemo
我的叉子https://github.com/desrat/BarcodeDemo
任何帮助都将不胜感激。
编辑:Jonus解决方案效果很好,但如果我想将该功能移出警报回调并立即打开浏览器该怎么办?
我已尝试使用
重新发出提醒namedFunc(result.text);
和
function(){namedFunc(result.text);};
答案 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>