在 Chrome 扩展程序中运行 Javascript -> 基本?
Posted
技术标签:
【中文标题】在 Chrome 扩展程序中运行 Javascript -> 基本?【英文标题】:Run Javascript in Chrome Extension -> Basic? 【发布时间】:2013-10-06 05:43:56 【问题描述】:我感觉我遗漏了一些非常明显的东西,但我一直在到处寻找,似乎无法完成这项工作。简而言之,我想把一个小的 javascript 脚本变成一个 chrome 扩展,让它更容易使用。
脚本只是从 textArea 读取文本,修改脚本并将其输出到 div 中。它在独立运行时可以与任何浏览器完美配合,但在作为 Chrome 扩展程序运行时似乎不想工作
这是文件(我基本上是在尝试转换示例):
谢谢!
manifest.json
"manifest_version": 2,
"name": "One-click Kittens",
"description": "This extension demonstrates a 'browser action' with kittens.",
"version": "1.0",
"browser_action":
"default_icon": "icon.png",
"default_popup": "popup.html"
,
"permissions": [
"https://secure.flickr.com/"
]
popup.html
<!doctype html>
<html>
<head>
<title>Getting Started Extension's Popup</title>
<style>
body
min-width: 357px;
overflow-x: hidden;
img
margin: 5px;
border: 2px solid black;
vertical-align: middle;
width: 75px;
height: 75px;
</style>
<!--
- JavaScript and HTML must be in separate files: see our Content Security
- Policy documentation[1] for details and explanation.
-
- [1]: http://developer.chrome.com/extensions/contentSecurityPolicy.html
-->
<script src="popup.js"></script>
</head>
<body>
<textarea id="source">Text Entry.</textarea>
<button onclick="main()" id="buttons">Generate</button>
<div id="result">
</div>
</body>
</html>
popup.js
function main()
var source = document.getElementById('source').value;
document.getElementById("result").innerHTML = source;
【问题讨论】:
【参考方案1】:根据chrome扩展文档,
内联 JavaScript 将不会被执行。此限制禁止内联 <script>
块和内联事件处理程序(例如 <button onclick="...">
)。
阅读:http://developer.chrome.com/extensions/contentSecurityPolicy.html#JSExecution
在 popup.js 中用作
document.addEventListener('DOMContentLoaded', function ()
document.querySelector('button').addEventListener('click', main);
);
function main()
var source = document.getElementById('source').value;
document.getElementById("result").innerHTML = source;
【讨论】:
这确实有效!非常感谢.. 作为后续问题... querySelector 正在寻找按钮点击,有没有办法修改它以查看特定的按钮 ID?如果有多个按钮可用? 只需使用document.getElementById
以上是关于在 Chrome 扩展程序中运行 Javascript -> 基本?的主要内容,如果未能解决你的问题,请参考以下文章
在开发 chrome 扩展程序时,如何打开一个空白页来运行脚本?
如何在运行 React 的 Chrome 扩展中运行 Redux DevTools 扩展?