如何在ionic 2中使用inAppBrowser插件的“executeScript”方法?

问题描述 投票:0回答:6

我在点击事件中有此代码

let browser = new InAppBrowser('http://example.com/test', '_self');
browser.executeScript({code: "(function() { alert(123); })()"});

当我单击按钮时,inAppBrowser 打开页面,但脚本不运行。
我关闭了浏览器,然后再次单击该按钮,现在脚本确实运行了。

为什么第一次没有运行?

cordova ionic-framework ionic2 inappbrowser
6个回答
10
投票

在InAppBrowser.addEventListener(loadstart、loadstop、loaderror)中添加executeScript,那么它将在第一次运行。我正在使用 ionic 1,但我想它也可以在 ionic 2 中工作。我在下面添加了示例代码。 (这就是 ionic 1 中的样子)。

  browser.addEventListener('loadstart', function(){
            browser.executeScript({code: "(function() { alert(123); })()"});
        })

2
投票

它不再以这种方式工作了。试试吧!

browser.on('loadstop').subscribe(() => {
  browser.executeScript({code: 'your_code'})
});

这对我有用。


0
投票

尝试运行以下代码。这对我有用。

   var ref = cordova.InAppBrowser.open("https://www.test.com/", '_blank');
            ref.addEventListener('loadstart', function() {
                ref.executeScript({
                    code: '//put the script you want to run here'
                });
            })

请确保给出 _blank 而不是 _system。 _系统将打开本机浏览器(例如chrome)


0
投票

@Andrews 的回答对我来说非常有效。这是我使用 @ionic-native/themeable-browser 的 Ionic 3 应用程序的完整代码:

let options: ThemeableBrowserOptions = {
        statusbar: { color: '#1976d2ff' },
        toolbar: { height: 44, color: '#1976d2ff' },
        closeButton: { align: 'right', event: 'closed', wwwImage: '/assets/images/icons/close-empty.png', wwwImagePressed: '/assets/images/icons/close-outline.png', wwwImageDensity: 3 },
        usewkwebview: 'yes',
        disallowoverscroll: 'yes',
        allowInlineMediaPlayback: 'yes',
        mediaPlaybackRequiresUserAction: 'no'
    },
    browser: ThemeableBrowserObject = self.iab.create(url, '_blank', options);
if (this.platform.is('ios')) {
    browser.on('loadstop').subscribe(() => {
        browser.executeScript({ code: 'document.body.classList.add("cordova-ios");' });
    });
}

这样我就可以通过

body.cordova-ios
类继承在 Cordova 中明确设置 iOS 样式


0
投票

@RezaT1994 将“_self”更改为“_blank”为我解决了这个问题。

let browser = new InAppBrowser('http://example.com/test', '_blank');
browser.executeScript({code: "(function() { alert(123); })()"});

0
投票

在最近的开发中,我注意到没有事件监听器正在处理最新的离子项目。但是,无需添加任何事件侦听器,您可以通过直接调用在 InAppBrowser 中添加 javascript InAppBrowser.executeScript() 函数。

希望它对某人有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.