Javascript 在 inappbrowser 中的行为与 Chrome 不同 - 未定义的全局变量

Javascript acting differently in inappbrowser vs Chrome - Undefined global variables

我的问题是,当我使用 inappbrowser 打开我的网页时,主 javascript 文件似乎被忽略了,即使它在我使用 [= 打开的文件的头部被引用也是如此14=]

我正在使用 chrome://inspect/#devices 检查控制台,但在按下按钮时出现错误。main.js 文件中引用的任何内容均未定义。而自动完成和按钮的实际代码似乎正在执行。

请注意 url 在 chrome 浏览器中查看时工作正常。 javascript 文件似乎可以正确加载,并且所有变量都已正确定义。 - 只有当我使用 inappbrowser 时,我才会看到未定义变量的问题。

我的代码(cordova 应用程序):

ref = cordova.InAppBrowser.open('https://MYURLHERE:8484/home/login', '_self', 'location=yes');
    var myInAppBrowserCallback = function(event) { 
        console.log(event.url, 'LOADED'); 
    };
    ref.addEventListener('loadstart', myInAppBrowserCallback);
//Works fine.

我的代码(来自我试图在 Inappbrowser 中查看的实际网站):

<script src="/Scripts/commonFunctions.js"></script>
var p = 'Hello';

<script src="/Scripts/loginPage.js"></script>
$('#btnLogin').on('click', function() {
    alert(p);
});

Returns 未定义的警报。

我尝试过的:

  1. 大量谷歌搜索! (所有答案似乎都与 javascript 未启用有关......或 404 错误或类似的事情......不是来自一个 js 文件的全局变量在另一个 js 文件中未定义。)
  2. 正在删除 inappbrowser,使用 window.open.. 将不起作用,因为该应用需要执行脚本来检查站点的本地存储。
  3. 正在使用 cordova 重新安装 android 平台。
  4. 正在重新安装插件。
  5. 在检查器中检查 chrome 以确保文件在源选项卡中(它们是)。
  6. 检查 main.js 中的函数是否也存在(它们确实存在)。

谢谢,JFIT

总结: 问题是 javascript 文件试图加载“SpeechSynthesis”,它仅在 inappbrowser 中未定义。

详情:

这个问题令人困惑,但这是我发现的调试/解决步骤:

  1. 在 phone 上设置远程调试,以便您可以使用 chrome://inspect/#devices[= 查看 phone 的控制台10=]

  2. 查看 inappbrowser 站点的控制台(它将显示为 inappbrowser 实例的单独页面。

  3. 识别正在加载的文件并删除文件,直到 'undefined' 错误消失。

  4. 在最近的文件里加回来,开始剥离各种函数(尤其是functions/variables之前的document.ready(还有全局变量)

  5. 那样找到line/variable。这种方式对我来说很方便,因为在我删除了大部分文件后实际未定义的变量出现了。

  6. 我的错误的实际原因是 speechSynthesis 功能。

删除了 speechsynthesis 行,我重新添加了所有剩余的文件,一切正常。此功能在 desktop/android 上的 chrome 中运行良好,但在 inappbrowser 中运行不正常。