方法'executeScript'无效 - InAppBrowser

时间:2016-12-06 16:45:03

标签: cordova angular ionic-framework inappbrowser

在我的应用程序中,我正在尝试使用InAppBrowser的executeScript方法执行一些脚本。记住我正在使用Ionic Framework v2,这是我的代码:

browser.executeScript({
            code: `
              $(".rodape.geral table tbody tr:nth-child(2) td:nth-child(1) div:nth-child(1)").css("min-width","auto");
              $(".rodape.geral table tbody tr:nth-child(2) td:nth-child(1) div:nth-child(1) div:nth-child(1)").css("width","auto");
              $(".rodape.geral table tbody tr:nth-child(1) td:nth-child(2) table:nth-child(1)").attr("align","center");
            `
          }).then((e)=>{ console.log('JS adicionado.'); }).catch((e)=>{ console.log('Erro ao adicionar JS. '+e); });

为什么代码无效并且没有返回回调? THKS。

3 个答案:

答案 0 :(得分:1)

确保此代码位于inAppBrowser的loadstop事件侦听器中。

在运行JS之前,需要加载浏览器视图。

答案 1 :(得分:0)

问题是executeScript本身就是一个承诺,所以为了使你的代码能够运行,你必须写下这样的东西:

$rootScope.$on(’$cordovaInAppBrowser:loadstop’, function (e, event) {
        browser.executeScript({
            code: `
              $(".rodape.geral table tbody tr:nth-child(2) td:nth-child(1) div:nth-child(1)").css("min-width","auto");
              $(".rodape.geral table tbody tr:nth-child(2) td:nth-child(1) div:nth-child(1) div:nth-child(1)").css("width","auto");
              $(".rodape.geral table tbody tr:nth-child(1) td:nth-child(2) table:nth-child(1)").attr("align","center");
            `
          }).then((e)=>{ console.log('JS adicionado.'); }).catch((e)=>{ console.log('Erro ao adicionar JS. '+e); });
});

答案 2 :(得分:0)

我发现您需要在loadstop事件中添加此代码,以便在网页加载后添加脚本或样式。

browser.on('loadstop').subscribe(event => {
  browser.executeScript({
    code : 'your javascript code'
  }).then(() => {
    console.log("in executeScript then()");
  });
});