如何将客户端代码映射到源代码

2024-02-19

最近我了解到可以使用以下命令显示添加到 DOM / Dev Tools Elements 选项卡的 JavaScript 代码document.write, eval等到 Chrome 开发工具和其他浏览器的源代码面板。这是通过在结束前添加评论来完成的<script>:

<script>
...

//# sourceURL=filename.js
</script>

我尝试应用此功能,但 HtmlService 未将注释添加到浏览器。如何在开发工具源面板中显示 Google Apps 脚本客户端代码?

以下是我尝试添加sourceURL如上图 代码.gs

function doGet(e) {
  return HtmlService.createHtmlOutput()
    .append(`
  <!DOCTYPE html>
  <html>
  <head>
  <base target="_top">
  </head>
  <body>
  <form>
  <input type="text" name="something" value="default value"><br>
  <button type="submit">Submit</button>
  </form>
  <script>
  function formSubmitHandler(){
    google.script.run.doSomething(event.currentTarget)
  }
  //# sourceURL=javascript.js
  </script>
  </body>
  </html>
`)
    .setTitle('Demo')
    .addMetaTag('viewport', 'width=device-width, initial-scale=1');
}

function doSomething(formData){
  console.log(JSON.stringify(formData.something));
}

Related

  • 如何在 Google 脚本中的 HtmlService 中调试 JavaScript https://stackoverflow.com/q/26518902/1595451。不是重复的,因为 OP 没有包含 MCVE,没有提到如何HtmlOutput被创建。最常见的情况是使用HtmlService.createHtmlOutpuFromFile(filename)但在这种情况下我使用HtmlService.createHtmlOutput().append(string).
  • 缩小 javascript 时, //@ sourceUrl 被删除 https://stackoverflow.com/q/27934624/1595451。不重复,因为在 Google Apps 脚本 HtmlService 中不会最小化代码。
  • https://stackoverflow.com/a/13129905/1595451 https://stackoverflow.com/a/13129905/1595451。不重复,因为 JavaScript 代码是使用 jQuery 添加的,在本例中,代码是使用 Google Apps 脚本 HtmlService 添加的

参考

  • 将预处理代码映射到源代码 https://developer.chrome.com/docs/devtools/javascript/source-maps/

而不是一次添加整个客户端代码(使用单个HtmlOutput.append),将代码至少分成两部分。第一个应该包含从顶部到第一个的代码/ of //# sourceURL=javascript.js,第二部分应该添加其余的代码。这里的关键是避免//同时添加(而不是使用单个HtmlOutput.append使用两个)。

function doGet(e) {
  return HtmlService.createHtmlOutput()
    .append(`
  <!DOCTYPE html>
  <html>
  <head>
  <base target="_top">
  </head>
  <body>
  <form>
  <input type="text" name="something" value="default value"><br>
  <button type="submit">Submit</button>
  </form>
  <script>
  function formSubmitHandler(){
    google.script.run.doSomething(event.currentTarget)
  }
  /`)
  .append(`/# sourceURL=javascript.js
  </script>
  </body>
  </html>
`)
    .setTitle('Demo')
    .addMetaTag('viewport', 'width=device-width, initial-scale=1');
}

function doSomething(formData){
  console.log(JSON.stringify(formData.something));
}

我还在原型 SPA 中尝试过这一点,使用模板化 HTML,从多个库中提取多个文件(每个库有一组或两组三个 .html 文件、索引、css 和 js,每个席位对应于至少有一个表单和一个的模块)列表视图。最终HtmlOutput拥有 > 20 个<stript>,所有内容都正确映射到源代码。

映射到源代码的 JavaScript 代码将如下图所示:

右键单击文件名并选择Copy link address将返回类似这样的内容:

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

如何将客户端代码映射到源代码 的相关文章

随机推荐

  • 使用“get”来访问地图有什么好处

    从这个问题跟进 按关键字进行惯用的 clojure 映射查找 https stackoverflow com questions 7034803 idiomatic clojure map lookup by keyword 使用 cloj
  • Spring Rest 和 jQuery Ajax 文件下载

    我目前正在使用 jQuery 和 Spring Rest jQuery 用于向服务器上传和下载文件 上传过程工作正常 但下载文件时没有什么问题 所以场景是 在视图中 用户将选择n个要下载的文件并单击下载按钮 一旦用户单击该按钮 文件就会被下
  • angular.js 选择输入框的过滤类型

    我使用 angular js 的时间很短 有时我有一种感觉 我对 html 和 javascript 一无所知 因为 Angular 在遇到我想象中应该的东西时 可能非常简单 这是我头痛的地方 我的电流控制器scope persons是工厂
  • 为动态加载的新元素添加tinymce

    我的页面包含 5 个 div 可以通过 Tinymce 内联编辑器进行编辑 我可以通过单击按钮 如此动态 来轻松地使用 Jquery 加载 5 个新的 但当然 新的 div 不会受到 Tinymce 的影响 因为 init 已经加载了 我怎
  • 如何在 wpf 中将 List 转换为 ObservableCollection

    我在 wpf 中 有一个通用列表 List 现在我希望将其转换为通用的可观察集合 ObservableCollection 我知道我可以迭代列表并将每个单独的项目添加到 Observable 集合中 然而 在我看来 必须有一种内置的方法来做
  • 如何自定义 JAXB 生成复数方法名称的方式?

    我们使用 JAXB 生成 Java 类 遇到了一些生成的复数方法名称不正确的情况 例如 我们期望的地方getPhysicians我们正在得到getPhysicien 我们如何自定义 JAXB 复数特定方法的方式 架构
  • 如何在SQL Server 2012中解析json数据?

    我正在使用 SQL Server 2012 我被分配了一项任务 其中我的专栏之一 JsonText 的表Sample包含 json 数据 我想通过解析该数据并将其插入到另一个表的列中 Test 我在网上搜索 openjson 在 SQL S
  • Google 地图 API 多个标记

    我正在使用以下代码来显示谷歌地图 并在地图上创建一个标记 它运作良好 我只需要在同一张地图上放置多个标记即可
  • Onclick 事件删除文本输入字段中的默认值

    我有一个输入字段
  • 强制客户端或服务器重新启动 SSL 握手(或使 SSL 会话过期)

    我有一个客户端 用 Java 编写 连接到 HTTPS 服务器 该服务器也是用 Java 编写的 客户端证书和可信证书存储在 PKI 令牌中 客户端不断地向服务器发送一些HTTP请求 一切都很好 现在我想强制客户端 或服务器 重新启动握手
  • Sublime Text 2控制台输入[重复]

    这个问题在这里已经有答案了 我使用 Sublime Text 2 但当我的代码要求用户输入时 它不会让我输入任何值 换句话说 input 在Python和gets在 Ruby 中无法正确提示我输入 Python 抛出一个EOFError错误
  • 实现Python异常

    我在程序中实现异常系统时遇到一些问题 我在某处发现了以下一段代码 我试图将其用于我的程序 class InvalidProgramStateException Exception def init self expr msg self ex
  • 在 AS3 中加载嵌入图像

    好吧 我觉得问这个问题很愚蠢 但我花了整个下午试图弄清楚 但没有成功 在 AS3 中 我想向库添加一个图像 我们称之为 image png 并仅使用代码实例化它 我以这种方式成功实例化了外部图像 var pLoad Loader new L
  • 清除 Web 浏览器控制所有站点的 cookie,而不清除 IE 本身

    编辑 据我所知 这个问题没有解决方案 这又证明了一个事实 不应该使用 C 的 WebBrowser 我们最终在程序开始时出现了一个警告标志 通知用户将为 IE 清除 cookie 我想做的事情的简短版本就在标题中 这是长版本 我有一个复杂的
  • 在greasemonkey中使用javascript创建一个cookie

    我正在尝试用greasemonkey创建一个cookie 以阻止窗口弹出 在窗口弹出后 创建cookie后 窗口不会弹出多次 这是代码 function setCookie c name value expiredays var exdat
  • 如何使用 StandardScaler 标准化 Spark 中的一列?

    我正在尝试标准化 平均值 0 标准 1 我的数据框中的一列 年龄 下面是我在 Spark Python 中的代码 from pyspark ml feature import StandardScaler from pyspark ml f
  • Web 项目中的 DAO、Hibernate 和会话

    我读过很多关于 DAO 和会话的问题 但不明白问题所在 现在我用这样的东西 core DAO http techtracer com wp content uploads 2008 12 daojava txt 我在核心 DAO 中添加了一
  • 使用画布渲染器绕 y 轴旋转长方体而不导致图像失真 ( Three.js )

    我花了几个小时试图解决这个问题 当渲染非常简单的形状 即复杂性非常低的立方体 并使用 Three js 的纹理贴图功能时 当您旋转立方体时 图像似乎旋转时会变形 然后您可以看到一条穿过立方体表面的线 该线看起来像变形 http screen
  • 提取数据 PHP 字符串

    我已经使用 file get contents 基本上将站点的源代码获取到单个字符串变量中 源包含许多行 如下所示 td align center a href somewebsite com something 12345 a td 还有
  • 如何将客户端代码映射到源代码

    最近我了解到可以使用以下命令显示添加到 DOM Dev Tools Elements 选项卡的 JavaScript 代码document write eval等到 Chrome 开发工具和其他浏览器的源代码面板 这是通过在结束前添加评论来