来自docs....
您的浏览器会自动加载和评估任何元素
出现在初始页面加载时。
当您导航到新页面时,Turbolinks 会查找任何
新页面中不存在于当前页面中的元素
页。然后它将它们附加到加载它们的当前位置
并由浏览器评估。您可以使用它来加载其他
按需提供 JavaScript 文件。
Turbolinks 每次都会评估页面中的元素
呈现页面。您可以使用内联正文脚本来设置每页
JavaScript 状态或引导客户端模型。要安装行为,
或者当页面发生变化时执行更复杂的操作,避免
脚本元素并改用 turbolinks:load 事件。
实际上,您可以只将脚本放在正文标记中。
如果它是更复杂的东西,或者可能是外部形式,你的意思是 iframe 之类的东西,我过去曾为 trustpilot 做过以下工作。诚然,这不是一种形式,但它可能会帮助你。
在head标签中,我放了
<head>
<!-- TrustBox script -->
<script type="text/javascript" src="//widget.trustpilot.com/bootstrap/v5/tp.widget.bootstrap.min.js" async></script>
<!-- End Trustbox script -->
</head>
然后在body里面,我有一个div
<div id='trustpilot' class="trustpilot-widget" data-locale="en-UK" data-template-id="53aa8912dec7e10d38f59f36" data-businessunit-id="58dd0d0a0000ff00059f84bc" data-style-height="130px" data-style-width="100%" data-theme="light" data-stars="1,2,3,4,5">
<a href="https://uk.trustpilot.com/review/company" target="_blank">Trustpilot</a>
</div>
最后,我使用 Turbolinks 事件侦听器来激活 iframe。
document.addEventListener("turbolinks:load", function () {
// find trustpilot header
var trustpilotHeader = document.getElementById('trustpilot-header');
if (trustpilotHeader) {
window.Trustpilot.loadFromElement(trustpilotHeader);
} else {
// handle element not found
return;
}
var trustpilot = document.getElementById('trustpilot');
if (trustpilot) {
window.Trustpilot.loadFromElement(trustpilot);
} else {
// handle element not found
return;
}
});