Turbolinks 5:在特定页面中添加来自其他站点的外部javascript文件
我正在使用,对于某些特定的页面,我想加载一个外部javascript文件 在我的示例中,我有一个联系人页面,我希望通过加载GoogleMapsAPI来显示地图。访问根页面时不应加载它,但稍后单击联系人页面的链接后应将其包含在内 曾在Turbolinks 2工作。但似乎不再有效了 可以检查javascript是否已经加载,如果需要,可以异步加载 大概是这样的:Turbolinks 5:在特定页面中添加来自其他站点的外部javascript文件,javascript,ruby-on-rails,turbolinks,ruby-on-rails-5,Javascript,Ruby On Rails,Turbolinks,Ruby On Rails 5,我正在使用,对于某些特定的页面,我想加载一个外部javascript文件 在我的示例中,我有一个联系人页面,我希望通过加载GoogleMapsAPI来显示地图。访问根页面时不应加载它,但稍后单击联系人页面的链接后应将其包含在内 曾在Turbolinks 2工作。但似乎不再有效了 可以检查javascript是否已经加载,如果需要,可以异步加载 大概是这样的: loadScript = (src, callback) -> script = document.createElement(
loadScript = (src, callback) ->
script = document.createElement("script")
script.type = "text/javascript"
script.onload = callback if callback
document.getElementsByTagName("head")[0].appendChild(script)
script.src = src
initialize = ->
# init map here
load = ->
if $('#gmap').size > 0
if typeof(google) == 'function'
initialize()
else
loadScript 'https://maps.googleapis.com/maps/api/js?&callback=initialize'
$(document).on 'turbolinks:load', -> load()
这是处理这个问题的唯一方法还是有更简单的方法?现在你可以试试
它是为特定于页面的JavaScript片段而生的
- 添加一个新的脚本标记,如
- 在merchant文件中,您可以依靠刺激来处理TurboLink和jquery ready的事件
// hello_controller.js
import { Controller } from "stimulus"
export default class extends Controller {
static targets = [ "name", "output" ]
greet() {
this.outputTarget.textContent =
`Hello, ${this.nameTarget.value}!`
}
}
看看阿尔菲内斯。它就是为此而建的。根据文件, Alpine.js为您提供了big的反应性和声明性特性 Vue等框架的反应成本要低得多。你得保持冷静 您的DOM,并在您认为合适的情况下添加行为。想一想 JavaScript的顺风
Mordaroso根据以下评论,您的解决方案很好:。我们可以在turbolinks gem中打开一个PR,它将添加一个带有您发布的代码的helper JavaScript函数,以便开发人员可以轻松使用它,否则将创建一个新的gem来发布此helper。虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接供参考。如果链接页面发生更改,仅链接的答案可能无效。-明白了。我是新来的,仍在努力适应。