amehime / hexo-theme-shoka

Just For https://shoka.lostyu.me/
MIT License
896 stars 206 forks source link

注入器(injector)注入的 js 只有直接連結才會運作 #57

Open hms5232 opened 2 years ago

hms5232 commented 2 years ago

標題可能下得不太好,但大致上是這樣的:

先使用 injector 注入一些程式碼在文章中,例如:

<script src="/js/foo.js"></script>

而這個 foo.js 內容是:

console.log("bar");

如果我直接使用網址進入文章,這些程式碼都會正常運作;但如果我是先到首頁,再點入文章,從原始碼可以看出 <script> 標籤有正確被注入,可是 foo.js 部分卻沒有被執行。

測試後發現如果在原地直接重新整理網頁,則全部都會正常運作。所以是只有從其他頁面連結進入文章的時候,所注入的程式碼不會被執行。因為是我在猜可能是主題渲染方式造成的,在其他主題並沒有碰到。目前還在研究原因,如果有解法或是知道原因的話再麻煩大大提供建議或意見了。

llxlr commented 2 years ago

参考pjax.js的实例https://github.com/MoOx/pjax/tree/master/example

llxlr commented 2 years ago

加一个事件去执行console.log()就行https://github.com/MoOx/pjax#events

比如

// pjax 加载完成后执行
document.addEventListener('pjax:complete', function(){
  console.log("bar");
});
hms5232 commented 2 years ago

加一个事件去执行console.log()就行https://github.com/MoOx/pjax#events

比如

// pjax 加载完成后执行
document.addEventListener('pjax:complete', function(){
  console.log("bar");
});

感謝大大支援,原本想測試一下再來回報及討論,不過最近剛好時間不足,所以先感謝您的提點。後續有結果會再回來更新

llxlr commented 2 years ago

直接这样

<script data-pjax src="/js/foo.js"></script>

也可以