当我检查两个特定单选按钮之一时,我试图使表单的某个部分出现.
这是单选按钮的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) 我正在尝试设计一个 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 中过滤响应,这样只有那些有用的才会被发送,但有时我仍然必须发送回复长度为 …