gpt4 book ai didi

javascript - Turbolinks 总是像往常一样加载页面

转载 作者:行者123 更新时间:2023-12-01 03:49:53 27 4
gpt4 key购买 nike

我正在测试 Turbolinks 是否有效可以帮助我们的 Web 应用程序看起来更快一些,表现得“几乎像”单页应用程序。

由于我们已经对所有链接的所有点击都有一种“主钩子(Hook)”,所以我设置 data-turbolinks="false"关于<body>然后更改我们的点击处理程序以调用 Turbolinks:

function goToUrl(url) {
// some controls here, and then ...

Turbolinks.visit(url);
}

我还禁用了缓存并将根设置为 / :

<meta name=\"turbolinks-cache-control\" content=\"no-cache\">
<meta name=\"turbolinks-root\" content=\"/\">

但是,我注意到它总是执行标准的页面更改,而不是它的“魔法”。

如果我从控制台调用该方法,也会发生同样的情况,不会显示错误或警告,但页面加载正常,而不是使用 Turbolinks“魔法”。

它唯一起作用的时候是访问根地址( "/" )时。

除了简单地使用 visit() 之外,是否还涉及更多配置方法?

编辑:

经过进一步测试,我注意到,当调用Turbolinks.visit(url)时似乎“失败”,通过发出正常的页面导航,它返回一个像这样的对象,记录时如下所示:

Object {
absoluteURL: "URL WHERE I TRIED TO NAVIGATE",
requestURL: "SAME AS ABOVE"
}

当我测试正确加载的唯一地址时,我得到了一个不同的对象:

turbolinks:visit {
target: HTMLDocument → /,
isTrusted: false,
eventPhase: 0,
bubbles: true,
cancelable: false,
defaultPrevented: false,
composed: false,
timeStamp: 1492781909168000,
cancelBubble: false,
originalTarget: HTMLDocument → /,
explicitOriginalTarget: HTMLDocument → /
}

在第一种情况下,它看起来像一个普通对象,而第二种情况看起来更像是一个事件;但这无助于识别导致其无法正常工作的问题。

最佳答案

最后我发现原因是我们所有的链接都是 PHP 文件,例如 /folder/index.php?p=1&x=2,而 Turbolinks 会检查其中,如果链接有扩展名,则它必须是 htmhtmlxhtml 之一。

所以我尝试用另一个函数覆盖该函数,如下所示:

Turbolinks.Location.prototype.isHTML = function() {
return this.getExtension().match(/^(?:|\.(?:htm|html|xhtml|php))$/);
};

这样做之后,它开始按预期工作。

关于javascript - Turbolinks 总是像往常一样加载页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43323305/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com