正在加载<head>中的.js文件
Loading .js file in <head>
所以我是javascript的新手(事实上,一般来说是编程新手)。
我的问题是,我可以考虑加载。js文件在
<head><script src="script.js"></script>...</head>
作为加载头文件(像在c/c++)?
我想没有。假设我的script.js看起来像这样:
function copyToClipboard(text)
{window.prompt("Copy to clipboard: Ctrl+C, Enter", text);}
和我的index.html看起来像这样:
<!DOCTYPE html>
<html>
<head>
<script src="script.js"></script>
</head>
<body>
<textarea id="a" autofocus="true"></textarea>
<script> onclick=copyToClipboard(document.getElementById("a").value);
</script>
</body>
</html>
它不起作用,也就是说,它没有等待我的单击(这意味着该函数被正确加载-它被成功调用,只是弹出窗口没有等待鼠标事件)。但如果我把脚本内嵌,它工作:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<textarea id="a" autofocus="true"></textarea>
<script>onclick=function copyToClipboard(text) {
window.prompt("Copy to clipboard:Ctrl+C,Enter",document.getElementById("a").value);
}
</script>
</body>
</html>
第一个代码不起作用的原因是您正在调用copyToClipboard()
函数并将返回值分配给onclick
变量。在第二段代码中,你正确地为它分配了一个函数引用,而不是立即调用函数。
换句话说:
onclick = copyToClipboard(document.getElementById("a").value);
"调用copyToClipboard()
,将返回值(undefined
)赋给onclick
变量"
onclick = function copyToClipboard(text) { ...
"将copyToClipboard()
函数的引用赋值给onclick
变量"
要使其与外部脚本中的函数定义一起工作,请将函数调用包装在匿名函数中:
onclick = function() {
copyToClipboard(document.getElementById("a").value);
};
所有人都称赞javascript误导开发人员错误诊断问题的能力!
这不是定义内联onclick处理程序的方式。内联onclick处理程序是html元素的一个属性(或属性,稍后我们会发现):
<textarea id="a" autofocus="true" onclick="copyToClipboard(this.textContent)"></textarea>
你对<script>
标签所做的只是包括一些javascript代码,在浏览器解析你的html时执行:
<script> onclick=copyToClipboard(document.getElementById("a").value);</script>
调用你的函数,并将其返回值赋给onclick
。
但是等等,为什么第二个代码片段可以工作呢?
这是因为onclick
也是dom元素的属性。你也可以给window
本身分配一个点击处理程序——这就是你的第二个代码片段实际上在做的事情(多亏了javascript的一个不太酷的特性,它试图给一个未定义的变量赋值,给全局对象的属性赋值)。这意味着无论你在哪里点击,你的新的点击处理程序都会被调用。
至于你的第一个问题,你真的不能说标签就像包含一样——一个脚本不像一个包含的文件,它可以包含的不仅仅是声明和定义。您可以查看一些模块标准/框架,如RequireJS,以获得更多类似的功能。
- 通过php页面中的js强制下载txt
- 调用php数组中的JS函数
- 如何引用HTML中节点模块中的js文件
- PHP中的JS.警报没有'不要出现
- 压缩静态HTML文件中的JS和CSS
- 将toString方法暴露给nashorn中的js对象
- 从.js文件调用html中的js函数
- cloudant中的JS trim()函数
- 动态(重新)创建iframe内容不会重置Chrome中的JS对象
- 使用HTML标记中的JS变量在Javascript中动态创建HTML
- 基于AJAX的网站中的JS window.location
- 可以't在Wordpress中从HTML中的JS文件调用函数
- 对php文件的Ajax调用返回该文件中的JS代码,而不是执行它
- 存储在 2D 数组中的 js 调用函数
- 点击蓝色按钮(点击vbs中的js按钮)
- View赢得't在页面更改时加载Rails 4应用程序中的JS
- 如何更新charts.JS值字段中的JS变量
- 从html文件中的js中提取链接
- Rails 4.1.1.:lib/assets/javascripts中的JS文件;t负载
- 将jsondecoded字符串中的js-eescaped-char(或hex-char?)转换为php中的html实体