即使添加了inappbrowser pugin,cordova- window.open()也无法正常工作

时间:2017-08-21 10:14:34

标签: javascript angularjs cordova

我正在使用cordova开发混合移动应用程序。当我点击一个按钮时,我需要在网站上打开一个网址。为此,我使用的window.open在浏览器中工作正常,但即使在添加inappbrowser插件后也无法在移动应用程序中运行。

下面我提供了我正在运行的代码:

<button type="submit" class="btn btn-primary btn-sm" id="myButton">Get Free Trial</button>`
document.getElementById("myButton").onclick = function () {
         window.open("https://indirect-tax.com",'_system');
};
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
    window.open = cordova.InAppBrowser.open;
}

1 个答案:

答案 0 :(得分:0)

我们针对全局重定向a代码的指令解决方案,我们使用了与您相同的插件,而没有重新定义window.open。您可以对其进行修改以添加规则,此版本仅重定向带有{&#34; http&#34;开头的href的链接,还会评估最终将放置在ngClick属性中的代码(您为了安全起见,应删除它,这是一个测试版本。)

angular
    .module('yourModule') 
    .directive('a', function () {
        return {
            restrict: 'E',
            link: function (scope, element, attrs) {
              if ( !attrs.href ){
                return;
              }
              var url = attrs.href;
              if ( url.lastIndexOf('http',0) === 0 ){
                element.on('click',function(e){
                  e.preventDefault();
                  if(attrs.ngClick){
                      scope.$eval(attrs.ngClick);
                  }
                  window.open(encodeURI(url), '_system');
                });
              };
            }
        };
    });