JavaScript命名规范与Android WebView兼容性问题:井号(#)函数名如何处理?

井号命名浏览器支持问题

关于js的命名规范,推荐是字母数字下划线和$组合,并且第一位不为数字,但在我用npm引用了用pdf-dist(2.14)的包时,在浏览器上chrome使用完全没问题,但在安卓webview中提示有语法错误(Unexpected token)
查看后如下
image.png
问了ai说这是表示私有方法,我在bing中并没有见到类似说法的帖子,想求证一下ai的回答是否正确
目前我打算修改node_module下的pdf-dist下的build中的pdf.js文件以井号开头的函数名,使其符合命名规范,这种处理方式是否合理?
image.png
---------------------------解决方案如下------------------------------------------
应用已采纳那位老哥的方法
.browserslistrc配置

Android >= 4
ChromeAndroid >= 83
last 2 versions

请注意,安卓webview的版本规则和ChromeAndroid版本规则是不一样的(卡了好久
另外,因为pdfjs-dist是依赖包,babel默认不处理依赖包编码,因此需要在vue.config.js中配置transpileDependencies属性(如果平时需要兼容的是自己写的代码则可以跳过这个配置)
最后,在bable.config.js里使用include配置代码区域,如

include: [path.resolve('src'), path.resolve('node_modules/pdfjs-dist')], 

即包含src和node_modules下的pdfjs-dist

后记:又遇到新问题了,pdf在浏览器上显示不错位但在安卓webview上会错位(QAQ)

阅读 1k
avatarAI BotBETA

在JavaScript中,井号(#)通常不被用作函数名或变量名的有效字符。JavaScript的ECMAScript规范中定义了标识符(包括变量名、函数名等)可以包含字母(A-Z, a-z)、数字(0-9)、美元符号($)和下划线(_),但不能以数字开头。因此,井号(#)在标准的JavaScript标识符中是不被允许的。

关于井号命名和浏览器支持问题

  1. 井号在JavaScript中的特殊用法:在某些JavaScript工具或框架(如TypeScript或Babel的某些插件)中,井号(#)可能被用作特定语法或功能的一部分,比如TypeScript中的私有字段提案(尽管这不是ECMAScript标准的一部分,且实现可能有所不同)。然而,在原生JavaScript或大多数浏览器中,井号不能用于命名函数或变量。
  2. Android WebView的兼容性问题:Android WebView通常基于Chrome的某个版本,但它可能不包含Chrome的所有最新特性或修复。如果pdf-dist包中的代码使用了井号作为函数名,这可能是通过某种构建工具(如Babel)或TypeScript转译而来,而Android WebView可能无法正确解析这种转译后的代码。

解决方案

  1. 修改源代码:直接修改node_modules下的文件通常不是一个好的做法,因为这会导致在更新依赖时丢失这些更改。更好的做法是尝试找到导致问题的具体原因,并寻求更通用的解决方案。
  2. 联系库维护者:如果这个问题是由于库本身的问题导致的,你可以考虑在库的GitHub仓库或相关支持论坛上报告这个问题。
  3. 使用替代库:如果这个问题无法解决,或者修复需要很长时间,考虑使用其他类似的库可能是一个更好的选择。
  4. 转译代码:如果可能,尝试在你的构建过程中添加一个步骤来转译这个库,确保它产生的代码与你的目标环境兼容。
  5. 升级Android WebView:如果你的应用目标是较新的Android版本,并且这个版本的WebView支持了更多的JavaScript特性,考虑引导用户升级到这些Android版本。

结论

井号(#)在JavaScript中不是有效的标识符字符,因此,如果你的代码或依赖的库在Android WebView中因为井号命名的函数而出现问题,这通常是因为代码被错误地转译或Android WebView的兼容性问题。建议寻找上述提到的解决方案之一来解决这个问题。

2 个回答

这个是安卓webview太老了,还没有支持到这个语法,用babel处理下就行了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题