小编xse*_*xse的帖子

隐藏或显示css/js中复选框的内容

当我检查两个特定单选按钮之一时,我试图使表单的某个部分出现.

这是单选按钮的HTML:

<strong>Window:</strong><br>
<input type="radio" name="wname" value="Hann" checked> Hann
<input type="radio" name="wname" value="Hamming"> Hamming
<input type="radio" name="wname" value="Bartlett"> Bartlett
<input type="radio" name="wname" value="Rectangular"> Rectangular
<input type="radio" name="wname" value="Kaiser"> Kaiser
<input type="radio" name="wname" value="Dolph"> Dolph<p>
Run Code Online (Sandbox Code Playgroud)

我想要的是,当检查Kaiser或Dolph按钮时,会出现以下表单部分:

<div class="wnum">
<strong>1. Window adjust parameter (-10 - 10):</strong><br>
<select name="selectbox">
    {% for i in range(-10,11):  %}
    <option value="{{ i }}">{{ i }}</option>
    {% endfor %}
</select><p>
</div>
Run Code Online (Sandbox Code Playgroud)

我已经尝试了很多解决方案,我在这里有点迷失..

这是一个很好的东西,但只有两个单选按钮:

HTML:

<input type=radio id="show" name="group">
<input checked type=radio id="hide" name="group">
<label id="id1" for="show"><span …
Run Code Online (Sandbox Code Playgroud)

html javascript css

5
推荐指数
1
解决办法
136
查看次数

Chrome 扩展,将消息从注入脚本发送到后台的最佳方式

我正在尝试设计一个 chrome 扩展,它必须将一个脚本注入到网页中,该脚本拦截 json 响应,并将它们发送到后台脚本。

请记住,我不习惯 js,我可能做错了,所以,在我的清单中我有:

"background": {
    "scripts": ["background.js"],
    "persistent": true
},
"content_scripts": [
{
  "matches": ["*://url*"],
  "run_at": "document_start",
  "js": ["inject.js"]
}
],
"web_accessible_resources": ["injected.js"],
Run Code Online (Sandbox Code Playgroud)

在我的后台脚本中,我以这种方式处理消息:

 chrome.runtime.onMessage.addListener(
  function(request, sender, sendResponse) {
    if (request.type) {
        switch(request.type) {
            case "THIS_REQUEST_TYPE":
            do_stuff(request.foo, request.bar);
            break;
            ...................
Run Code Online (Sandbox Code Playgroud)

ject.js的目的是将injected.js注入到网页中,现在它还对从inject.js到background.js的消息进行中继,我这样注入injected.js:

    var s = document.createElement('script');
s.src = chrome.extension.getURL('injected.js');
s.onload = function() {
    this.remove();
};
(document.head || document.documentElement).appendChild(s);
Run Code Online (Sandbox Code Playgroud)

现在,为了将消息从injected.js发送到我的后台脚本,我基本上使用:

  window.postMessage(msgdata, "*");
Run Code Online (Sandbox Code Playgroud)

这将消息从inject.js发送到inject.js,然后在inject.js中我可以通过以下方式获取这些消息:

 window.addEventListener("message", function(event) {
Run Code Online (Sandbox Code Playgroud)

然后我终于可以将这些消息发送到我的后台脚本,这次使用:

chrome.runtime.sendMessage(
Run Code Online (Sandbox Code Playgroud)

我发现没有可能的方法可以直接将消息从inject.js发送到background.js,chrome文档上提供的信息完全可以将消息从inject.js发送到background.js,但不能正常工作,我在网上尝试了几个解决方案,我使用的解决方案是我能够工作的唯一解决方案。

不管怎样,这有效,我可以将 json 响应从inject.js 发送到inject.js 到background.js 并在我的后台脚本中解析它们。

问题是,我讨厌这样做,json 响应可能非常长,我已经在injected.js 中过滤响应,这样只有那些有用的才会被发送,但有时我仍然必须发送回复长度为 …

javascript messaging google-chrome-extension

3
推荐指数
1
解决办法
3832
查看次数