正在创建 Chrome 扩展,但 Javascript 文件中的显示文本未显示在 HTML 显示屏上。 HTML 是另一个 HTML 文件的 InnerHTML

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

为个人项目创建 Google 登录扩展,因此我设置了功能,允许我使用我的 Google 帐户登录该扩展,并且它可以工作。我使用一个名为“popup.html”的初始 HTML 文件来保存 Google 身份验证的逻辑,方法是调用“popup.js”作为后端脚本,显示“等待登录”消息,然后将该属性设置为成功登录后,通过将其内容设置为“popup.html”的innerHTML 属性,显示另一个名为“authorized.html”的HTML 文件的内容。问题是“authorization.html”自己的脚本“authorized.js”不会在我的控制台上打印任何内容,甚至不会在控制台上抛出错误,尽管“authorized.html”的其他内容已成功显示。下面仅是我的代码的相关部分,但我想知道为什么会遇到这个问题以及如何规避它。谢谢你

popup.html:

<!DOCTYPE html>
<html>
<head>
  <title>Google OAuth Sign-In</title>
  <script src="popup.js"></script>
</head>
<body>
   <div id="Sign-In TempUI" class="content-body">Waiting for Google Sign-In</div >
  </body>
</html>

popup.html:

console.log('popup.js loaded');
document.addEventListener('DOMContentLoaded', function () {
    const NewGUI = document.getElementById('Sign-In TempUI');
  
    chrome.identity.getAuthToken({ interactive: true }, function (token) {
      if (chrome.runtime.lastError) {
        console.error(chrome.runtime.lastError.message);
        return;
      }
      console.log('Token acquired:', token);
      loadAuthorizedUI(token);
    });


    function loadAuthorizedUI(token) {
        console.log('Debug:', token);
      fetch('authorized.html')
        .then(response => response.text())
        .then(html => {
          console.log('HTML content:', html);
          NewGUI.innerHTML = html;

        })
        .catch(error =>  console.error('Error fetching or processing HTML:', error));

    }
    
  });

授权.html:

<!-- Page Displayed after recieving token from OAuthetication. Should display GUI for Email handling --> 
<!DOCTYPE html>
<html>
<head>
  <title>Authorized UI</title>
</head>
<body>
  <h1>Welcome! You are now authorized.</h1>
  <ul id="emailList">
   
  </ul>
  <script src="authorized.js"></script>
  <div>Hit end</div>
</body>
</html>

授权.js:

//throw new Error('This is a test error from authorized.js');
console.log('authorized.js loaded');

之前,我启动了另一个 document.addEventListener('DOMContentLoaded', function ()) ,然后在尝试通过 Id 获取其元素后尝试替换 emailList 的内容,但它甚至无法打开authorized.js。 Console.log 不会打印任何内容,并且异常实际上不会在控制台上显示任何内容。但是,当我将authorized.js脚本移至popup.html时,它会突然显示albiet错误。我最大的困惑是“欢迎!您现在已获得授权”。并且“Hit end”将显示在我的 GUI 上,但脚本甚至不会打印,就好像它跳过它一样

javascript html google-chrome-extension error-handling
1个回答
0
投票

您的authorized.js 文件似乎未按预期执行。造成这种行为的原因可能有几个:

脚本未加载:确保authorized.js 文件的路径正确并且该文件可访问。仔细检查文件名及其相对于authorized.html 文件的位置。

内容安全策略:Chrome 扩展程序具有内容安全策略 (CSP),可限制内联脚本和某些类型的动态代码执行。确保您的扩展程序的 manifest.json 文件包含适当的权限和 CSP 指令以允许执行脚本。

错误抑制:即使您的authorized.js 文件中发生错误,如果在Chrome 扩展程序的后台脚本中的某个位置捕获到该错误,该错误也可能不会显示在控制台中。检查扩展代码中是否有任何可能抑制错误的 try-catch 块或错误处理程序。

调试:尝试在authorized.js开头添加一条简单的语句,以确保文件被加载并执行。例如:

console.log('authorized.js loaded');

权限:确保您的扩展程序具有在authorized.html和authorized.js上下文中执行脚本所需的权限。

清单文件:检查扩展程序的清单文件 (manifest.json),以确保它正确指定需要访问的资源以及这些资源所需的权限。

通过解决这些潜在问题,您应该能够诊断authorized.js 未执行的原因并相应地解决问题。

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