如何在ionic 2中使用inAppBrowser插件的"executeScript"方法?
How to use "executeScript" method of inAppBrowser plugin in ionic 2?
我在点击事件中有这段代码
let browser = new InAppBrowser('http://example.com/test', '_self');
browser.executeScript({code: "(function() { alert(123); })()"});
当我单击按钮时,inAppBrowser 打开页面,但脚本没有 运行。
我关闭了浏览器,然后再次单击该按钮,现在脚本执行 运行。
为什么不是第一次 运行ning?
在 InAppBrowser.addEventListener (loadstart, loadstop, loaderror) 中添加 executeScript 然后它会在第一时间 运行。我使用的是 ionic 1,但我想它也适用于 ionic 2。我在下面添加了示例代码。 (这就是 ionic 1 中的样子)。
browser.addEventListener('loadstart', function(){
browser.executeScript({code: "(function() { alert(123); })()"});
})
它不再以这种方式工作了。试试吧!
browser.on('loadstop').subscribe(() => {
browser.executeScript({code: 'your_code'})
});
这对我有用。
尝试运行以下代码。这对我有用。
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。 _system 将打开本机浏览器(例如 chrome)
@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
class 继承
在 Cordova 中显式设置 iOS 的样式
@RezaT1994 将“_self”更改为“_blank”为我解决了这个问题。
let browser = new InAppBrowser('http://example.com/test', '_blank');
browser.executeScript({code: "(function() { alert(123); })()"});
我在点击事件中有这段代码
let browser = new InAppBrowser('http://example.com/test', '_self');
browser.executeScript({code: "(function() { alert(123); })()"});
当我单击按钮时,inAppBrowser 打开页面,但脚本没有 运行。
我关闭了浏览器,然后再次单击该按钮,现在脚本执行 运行。
为什么不是第一次 运行ning?
在 InAppBrowser.addEventListener (loadstart, loadstop, loaderror) 中添加 executeScript 然后它会在第一时间 运行。我使用的是 ionic 1,但我想它也适用于 ionic 2。我在下面添加了示例代码。 (这就是 ionic 1 中的样子)。
browser.addEventListener('loadstart', function(){
browser.executeScript({code: "(function() { alert(123); })()"});
})
它不再以这种方式工作了。试试吧!
browser.on('loadstop').subscribe(() => {
browser.executeScript({code: 'your_code'})
});
这对我有用。
尝试运行以下代码。这对我有用。
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。 _system 将打开本机浏览器(例如 chrome)
@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
class 继承
@RezaT1994 将“_self”更改为“_blank”为我解决了这个问题。
let browser = new InAppBrowser('http://example.com/test', '_blank');
browser.executeScript({code: "(function() { alert(123); })()"});