首页 > 解决方案 > 尝试通过 chrome 扩展在我的网页上创建叠加层。但是html覆盖没有显示

问题描述

我正在尝试在我所在的当前页面中打开一个覆盖元素。要使用 Google Chrome 扩展程序执行此操作,我正在从 background.js 向 content.js 发送一条消息。我正在尝试加载在 content.js 中包含覆盖的 html。我的猜测是,我的 html 仅创建覆盖但不显示它。是这样吗?

这是我的代码: content.js

chrome.runtime.onMessage.addListener(
    function(request, sender, sendResponse) {
        
        if (request.greeting == "xx"){
            
            var iframe  = document.createElement ('iframe');
            iframe.src  = chrome.extension.getURL ('xx.html');
            document.body.appendChild (iframe);
        
        }
      
    }
    
  );

和 xx.html

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<script type="text/javascript" src="content.js"></script>
<style>
body {
  font-family: 'Lato', sans-serif;
}

.overlay {
  height: 100%;
  width: 100%;
  display: none;
  position: fixed;
  z-index: 1;
  top: 0;
  left: 0;
  background-color: rgb(0,0,0);
  background-color: rgba(0,0,0, 0.9);
}

.overlay-content {
  position: relative;
  top: 25%;
  width: 100%;
  text-align: center;
  margin-top: 30px;
}

.overlay a {
  padding: 8px;
  text-decoration: none;
  font-size: 36px;
  color: #818181;
  display: block;
  transition: 0.3s;
}

.overlay a:hover, .overlay a:focus {
  color: #f1f1f1;
}

.overlay .closebtn {
  position: absolute;
  top: 20px;
  right: 45px;
  font-size: 60px;
}

@media screen and (max-height: 450px) {
  .overlay a {font-size: 20px}
  .overlay .closebtn {
  font-size: 40px;
  top: 15px;
  right: 35px;
  }
}
</style>
</head>
<body>

<div id="myNav" class="overlay">
  <a href="javascript:void(0)" class="closebtn" onclick="closeNav()">&times;</a>
  <div class="overlay-content">
    <a href="#">About</a>
    <a href="#">Services</a>
    <a href="#">Clients</a>
    <a href="#">Contact</a>
  </div>
</div>

<h2>Fullscreen Overlay Nav Example</h2>
<p>Click on the element below to open the fullscreen overlay navigation menu.</p>
<span style="font-size:30px;cursor:pointer" onclick="openNav()">&#9776; open</span>


</body>
</html>

此外,将 html 作为 Web 可访问资源添加到我的清单文件中:

"content_scripts": [
        {
        "matches": [
            "http://*/*",
            "https://*/*"
        ],
        "js": ["content.js"]
        }
    ],"web_accessible_resources": [
        "xx.html"
        
      ],

标签: javascripthtmlgoogle-chromegoogle-chrome-extension

解决方案


推荐阅读