<p>我想在我的Next.js應用程式的每個頁面的Head部分中插入來自名為Zoho的應用程式的追蹤程式碼。我使用的是一個名為_document.tsx的文件,它正常工作。對於一個傾斜的腳本,Next.js建議使用Next.js Script元件(https://nextjs.org/docs/messages/no-script-tags-in-head-component)。我按照說明將腳本插入到括號中,但它被忽略了,沒有錯誤訊息。我可以在_document.tsx檔的Head部分輸入這段程式碼嗎?是否最好將其拆分為一個單獨的組件?</p>
<p>任何建議都會有所幫助</p>
<pre class="brush:php;toolbar:false;">導入文檔,{
網頁,
頭,
主要的,
下一個腳本,
文檔上下文,
文檔初始道具,
} 來自「下一個/文檔」;
從“next/script”導入腳本;
類別 MyDocument 擴充文檔 {
靜態異步 getInitialProps(
ctx:文檔上下文
): Promise
; {
const initialProps = 等待 Document.getInitialProps(ctx);
回傳 { ...initialProps };
}
使成為() {
返回 (
<頭>
>
<連結
href=“https://fonts.googleapis.com/css?family=PT Sans&display=可選”
rel="樣式表"
>>
<元名稱=“msapplication-TileColor”內容=“#596285” >>
<元
name=“msapplication-config”;
內容=“/favicon/browserconfig.xml”
>>
<元名稱=“主題顏色”內容=“#ffffff” >>
{/* 對於 Zoho Marketing Automation */}
<腳本 id=“zoho-ma”>
{`var w = 視窗;
var p = w.location.protocol;
if (p.indexOf(“http”) < 0) {
p =“http”; 「:」;
}
var d = 文檔;
var f = d.getElementsByTagName(“腳本”)[0],
s = d.createElement(“腳本”);
s.type = “文字/javascript”;
s.async = false;
如果(s.readyState){
s.onreadystatechange = 函數 () {
if (s.readyState == "已載入" || s.readyState == "完成") {
s.onreadystatechange = null;
嘗試 {
載入waprops(
“我的 ID#”,
“我的 ID#”,
“我的 ID#”,
“我的 ID#”,
“0.0”
);
} 捕捉 (e) {}
}
};
} 別的 {
s.onload = 函數 () {
嘗試 {
載入waprops(
“我的 ID#”,
“我的 ID#”,
“我的 ID#”,
“我的 ID#”,
“0.0”
);
} 捕捉 (e) {}
};
}s.src = p“//ma.zoho.com/hub/js/WebsiteAutomation.js”;
f.parentNode.insertBefore(s, f);`}
</腳本>
{/* 結束 Zoho 行銷自動化 */}
</頭>
<正文>
<主要>>
>
</正文>
</Html>
);
}
}
導出預設MyDocument;</pre>
我重新閱讀了之前的帖子Next 11 and adding Script tags not working. No scripts are rendered enter link description here,意識到你不能把
< Script>
元件放在Head標籤中。此外,它不應該在_document.tsx中,而應該在_app.tsx中(除非你使用beforeInteractive,請參閱上面的連結)。因為我還想包含Google Analytics腳本,所以我建立了一個名為TrackingCode的元件作為單獨的js檔案。
我的_app.tsx檔案如下: