浏览器 在script type=“module“模式下的 按钮事件触发

本文介绍了如何在浏览器模块脚本(type='module')中,使得内部的方法能够被外部按钮访问。由于模块脚本的延迟加载特性,直接访问可能会导致找不到方法。文中提出了三种解决方案:1) 将方法绑定到window对象;2) 后绑定事件,通过document.getElementById设置onclick;3) 利用Vue框架简化事件绑定。这些方法都是为了克服模块脚本加载顺序与普通脚本不同的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

解决: 如何让浏览器模块脚本"module" 中的方法 ,被按钮访问到

方法1 把事件付给 window对象

原因是<script type="module" >模块会自动延迟加载 
也就是会晚于 普通的<script>	而且只加载一次, 
所以 按钮无法访问到 
<script type="module" >
		import HylAudio from './hylaudio.js';
		...
		//可以被访问
		window.recordStart = function() { HylAudio .recordStart();	};
		//record() 函数无法被访问	
		function record () { HylAudio .recordStart();	};
		...
</script>
...
<button onclick="recordStart()">开始录制</button>
<button onclick="record ()">开始录制</button>
...

方法二 后绑定事件

利用 module 加载滞后的特点
使用 document.getElementById(“bt_start”).οnclick= 事件 写法 ,后绑定事件

<script type="module" >
	function recordStart() { HylAudio .recordStart();	};
	document.getElementById("bt_start").onclick=recordStart;
</script>

方法三

在 script type=“module” 中 , 利用vue 的框架 简化绑定代码
原理同方法2

<script type="module" > 
import ....;
....
let options={}
Vue.createApp(options).mount('#app');
....
</script>
在Web开发中,通常通过JavaScript的File API来实现在页面上点击按钮触发文件选择对话框的功能。以下是使用HTML5的一个基本示例: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>文件选择</title> </head> <body> <input type="file" id="selectFile" accept=".txt,.pdf"> <!-- 文件选择按钮 --> <button onclick="handleFileSelect()">选取文件</button> <script> function handleFileSelect() { // 创建一个FileReader对象 var reader = new FileReader(); // 当用户选择了文件并点击打开时,会触发这个事件 reader.onload = function(e) { // 获取文件名和完整路径 var fileName = e.target.result; console.log("文件名:", fileName); // 获取到的是文件路径,如果需要完整路径,浏览器环境需额外处理 // 在Node.js环境下,可以使用path模块解析 if (typeof window === 'undefined') { // 判断是否在浏览器环境 var pathModule = require('path'); var filePath = pathModule.dirname(fileName); console.log("完整路径:", filePath); } }; // 开始读取文件内容 reader.readAsText(document.getElementById('selectFile').files[0]); } </script> </body> </html> ``` 在这个例子中,当用户点击“选取文件”按钮时,`handleFileSelect`函数会被调用,它会创建一个FileReader实例,并设置其onload事件处理器来读取用户选择的文件。`e.target.result`将返回一个表示文件内容的字符串(如果是文本文件),而完整的路径则依赖于具体的环境处理。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值