在chrome扩展(不只是一个函数)上单击一个按钮后,执行所有的javascript.js
Executing all javascript in a .js after clicking a button on a chrome extension (not just one function)
我是javascript的新手,有很多资源,但它们很难使用,因为我在chrome扩展上工作的约束。
Chrome扩展不允许在HTML中添加javascript代码,除非以这种形式:
<script language="javascript" src="login.js"></script>
现在,我有login.js运行和传递一些信息给API。这发生在HTML加载时,这是由用户点击chrome按钮引起的。
HTML:<html>
<head>
<link rel="stylesheet" type="text/css" href="mystyle.css">
</head>
<body>
<input id="clickMe" type="button" value="clickme"/>
<script language="javascript" src="login.js"></script>
</body>
</html>
用户单击扩展按钮后显示此页面,并立即运行login.js脚本。
我希望它只在按钮clickme被按下后运行login.js
login.js包含:
document.write("<br />" + "From login" + "<br />");
var output;
output = FunctionOne();
document.write("<br /> the output: " + output + "<br />");
function FunctionOne() {
var xhr =
...
return xhr;
}
function FunctionTwo() {
var cat
...
return cat;
}
在函数中换行:
function writeOutput() {
document.write("<br />" + "From login" + "<br />");
var output;
output = FunctionOne();
document.write("<br /> the output: " + output + "<br />");
}
那么login.js中的所有内容都是函数定义,所以当它加载代码时什么都不会运行。要使某些事情发生,在login.js中为clickme附加一个侦听器:
document.getElementById('clickme').addEventListener('click',writeOutput);
顺便说一下,你不应该使用document.write
。相反,在你的html中有一些占位符div
s,并调用document.getElementById('myDiv').textContent = 'stuff'
.
一个选择是使用javascript的"eval"函数。Eval允许您从字符串中运行任意代码。因此,如果您可以从login.js文档中获取文本,然后将其保存为字符串,则可以对其运行eval。
例如://这个示例login.js文件的内容
console.log(2+2)
//运行代码的javascript主文件的内容
var some_text_to_eval = get_text_from_file('login.js');
eval(some_text_to_eval); // this should console log the number 4
上面提供的方法直接回答了你的问题。如果您想使用更简单的方法,请使用jQuery库。它有一个"click"事件,允许您在点击某些内容后执行代码:https://api.jquery.com/click/
$('#clickMe').on('click', function(){
// do some work
console.log('test')
})
相关文章:
- jQuery-将列表项的一个元素移动到同一项的另一个元素中+对我的列表中的每个项执行此操作
- jQuery-在页面加载时执行一个函数
- 如何从另一个处理程序内部取消JavaScript事件处理程序函数的执行
- 如何打开一个新窗口或选项卡,并将其提供给javascript执行
- 在Javascript中一个接一个地执行一个函数
- 有没有一种方法可以检查javascript以毫秒为单位执行一个函数需要多长时间
- 你能用sound.js在播放声音文件后5秒执行一个动作吗
- 在页面内执行一个javascript函数作为last
- javascript下载一个文件并执行提交操作
- Rails 4、Turbolink在渲染一个部分后执行javascript
- 停止从另一个函数执行Javascript函数
- 如何生成一个执行AJAX调用的函数
- 执行一系列 Javascript 承诺一个接一个地解决
- 角度 2:使用一个 http 调用的结果来执行另一个调用
- 与 promise 一起使用时,异步瀑布不执行下一个回调方法
- 从一个文本框执行代码,并在另一个文本框中以 HTML 显示输出
- 是节点.js一次只执行一个上下文
- 仅在堆栈中的最后一个执行回调
- JavaScript:一个接一个执行多个REST调用的正确方法
- post请求总是在angularjs函数的最后一个执行(不是按顺序执行)