从 HTML 文件访问捆绑的 javascript(使用 webpack)中的函数

2023-12-23

我目前正在开发一个 Web 应用程序,并且正在重构我的代码,以便将其捆绑在 WebPack 中。

在我的 HTML 中,我有一个按钮可以调用sendMessage()单击时的功能,

<button type="button" class="btn btn-default" onclick="sendMessage(document.getElementById('claim').value)">Submit</button>

在我的代码的第一个版本中,sendMessage()函数被定义在.js我直接在 HTML 中导入的文件,

<script src="my_js/newsArticleScript.js"></script>

sendMessage() 函数直接在文件中声明,它不在任何类或模块内,但它调用同一文件上定义的其他函数,所以我不想将它分开。

但现在它被 WebPack 捆绑了。这是我的配置文件(homepageScript.js用于另一页):

const path = require('path')

module.exports = {
  entry: {
  	homepage: './src/homepageScript.js',
  	newspage: './src/newsArticleScript.js'
  },
  output: {
    filename: '[name].bundle.js',
    path: path.resolve(__dirname, 'dist/my_js')

  }
}

我更改了 HTML 上的脚本导入以导入捆绑版本。 现在,当我按下按钮时,我收到错误

[Error] ReferenceError: Can't find variable: sendMessage

我读过相关内容,并且了解到 webpack 不会全局公开这些函数。我尝试导出该函数,但不断收到相同的错误。

谁能帮我这个?本质上我需要的是了解如何配置 webpack 或更改 JS,以便可以通过 HTML 访问它。

我是 JS 新手,所以我很确定我的应用程序的设计方式不是最好的,因此任何有关改进的提示(也许我应该使用模块,或者有更好的方法在单击按钮时调用 JS 函数)也欢迎。谢谢 :)


一般来说,使用基于文本的事件处理程序并不是一个好主意。也就是说,您有几个选择,并且变化量不断增加。

  1. 对于文本onchange处理人员上班,sendMessage必须是全球性的。因此,最快的解决方法是更改​​代码来做到这一点。例如,如果您有

    function sendMessage(arg){}
    

    在您的代码中,您需要添加一个额外的

    window.sendMessage = sendMessage;
    

    在其之后将其公开为全局变量。

  2. 更现代的方法是删除onchange从按钮并在 HTML 中用 ID 标记按钮,例如id="some-button-id".

    然后在你的JS代码中,你可以这样做

    var button = document.querySelector("#some-button-id");
    button.addEventListener("change", function(){
      sendMessage(document.getElementById('claim').value);
    });
    

    添加change处理函数使用 JS 代码,而不是 HTML 属性。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 HTML 文件访问捆绑的 javascript(使用 webpack)中的函数 的相关文章

随机推荐

  • 如何将休眠与 MS Access 结合使用?

    我想将休眠与 MS Access 一起使用 我应该使用哪种方言 您能给我一个带有 MS Access 的休眠配置文件示例吗 实际解决方案在这里 在花了 1 天尝试不同的解决方案 ODBC HXTT 等之后 我发现了这个美妙之处 http u
  • ASP.NET Core 路由不起作用

    路由器的配置方式如下 app UseMvc routes gt routes MapRoute name api template api action id app UseMvc routes gt routes MapRoute nam
  • 为什么 nl_langinfo(CODESET) 与 locale charmap 不同?

    此帖源自如何获取您的系统在 c c 中使用哪种编码 https stackoverflow com questions 1492918 how do you get what kind of encoding your system use
  • 从 Excel 单元格读取

    我在用EPPlus http epplus codeplex com 用于从 xlsx 文件读取的包 我需要从单元格中读取 TimeSpan 对象 Excel 单元格将包含 hh mm 格式的数据 例如 09 00 或 18 30 不带引号
  • Lua Web 开发使用什么 Web 服务器 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Zend_Paginator 作为对象返回

    Zend Paginator 将结果作为标准数组返回 但我需要使结果作为类的实例返回 我该怎么做 例如 我想要所有新闻文章 因此需要我的项目作为 News Model Article 的实例返回 您还可以创建自定义 zend paginat
  • 如何从网页中的多个表中抓取内容

    我想从网页中的多个表中抓取内容 HTML 代码如下所示 div class fixtures table full table medium h2 class table header Date 1 h2 table class table
  • 解释基本 Prolog 结果

    我对 Prolog 的基础知识感到困惑 如果我有这个知识库 loves vincent mia loves marcellus mia loves pumpkin honey bunny loves honey bunny pumpkin
  • 当软键盘出现时,工具栏向上移动

    我想让我的活动布局在键盘出现时调整大小 但同时保持其工具栏位置不变 到目前为止 当我单击编辑文本并出现键盘时 所有屏幕都会向上移动 Before keyboard appears 键盘出现后 工具栏不再可见 我想将键盘保留在其位置并将图像移
  • 从 Git 存储库中删除已从磁盘删除的多个文件

    我有一个 Git 存储库 已删除了四个使用中的文件rm not git rm 我的 Git 状态如下所示 deleted file1 txt deleted file2 txt deleted file3 txt deleted file4
  • Go:如何检查结构体属性是否显式设置为零值?

    type Animal struct Name string LegCount int snake Animal Name snake LegCount 0 worm Animal Name worm 问题 我怎样才能检查snake and
  • 如何延长一条线与多边形相交?

    我想延长线以接触多边形 创建直线和多边形 直线和多边形 这是我的 拉伸和修剪 解决方案 结果比我最初提供的第一个 解决方案 要棘手一些 我还包括了水平线和垂直线的情况 我认为我的例子涵盖了all案例 线方向 我的编码非常简单 没有努力提高效
  • C# 结构体中的数组

    想要这样做 编辑 错误的示例代码 忽略并跳过下面 struct RECORD char name new char 16 int dt1 struct BLOCK char version new char 4 int field1 int
  • Doctrine QueryBuilder:多对一关系,其中多个子实体必须匹配

    我正在尝试在有实体的地方进行查询Job和一个实体JobProperty其中 1Job可以有很多JobProperties 使用 Doctrine 和 Symfony2 查询多对多关系 https stackoverflow com ques
  • 如何正确配置 babel 来使用 lodash-es?

    我需要使用lodash es在我的项目中 但我无法正确配置我的babel 它总是报告错误 例如SyntaxError Unexpected identifier hello js import upperCase from lodash e
  • 前缀“xcdg”未映射到命名空间

    我最近开始使用 Extended WPF Toolkit 中的 DataGridControl
  • java 音频滤波器

    我正在用java开发一个简单的音频播放器 我唯一需要的高级功能是频率滤波器 它不一定是一个全功能的均衡器功能 对于特定频率范围具有不同的增益 一个可以消除高于指定值的频率的低通滤波器就足够了 我学jlGui http www javazoo
  • 提高 HTML5 Canvas 分辨率

    我已经尝试了在这里看到的所有内容 但似乎对我的代码不起作用 或者也许我只是不知道如何应用它 我试图在我的 html 画布中获得更好的分辨率 因为矩形看起来有点 模糊 这是我的代码 html
  • Bootstrap 轮播淡入淡出过渡

    我在网站顶部使用带有淡入淡出过渡的 Bootstrap Carousel 代码如下所示 http codepen io anon pen mJxYaz 1 现在 淡入淡出过渡在 codepen 上非常平滑 但我已经在本地和本地主机服务器上尝
  • 从 HTML 文件访问捆绑的 javascript(使用 webpack)中的函数

    我目前正在开发一个 Web 应用程序 并且正在重构我的代码 以便将其捆绑在 WebPack 中 在我的 HTML 中 我有一个按钮可以调用sendMessage 单击时的功能