我想在我的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部分輸入這段程式碼嗎?是否最好將其拆分為一個單獨的組件?
任何建議都會有所幫助
導入文檔,{ 網頁, 頭, 主要的, 下一個腳本, 文檔上下文, 文檔初始道具, } 來自「下一個/文檔」; 從“next/script”導入腳本; 類別 MyDocument 擴充文檔 { 靜態異步 getInitialProps( ctx:文檔上下文 ): Promise主要> 正文> 元名稱=“主題顏色”內容=“#ffffff”> 元> 元名稱=“msapplication-tilecolor”內容=“#596285”> 連結>; { 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 行銷自動化 */} 頭> <正文> <主要> > > 正文> ); } } 導出預設MyDocument;
我重新閱讀了之前的帖子Next 11 and adding Script tags not working. No scripts are renderedenter link description here,意識到你不能把
< Script>
元件放在Head標籤中。此外,它不應該在_document.tsx中,而應該在_app.tsx中(除非你使用beforeInteractive,請參閱上面的連結)。因為我還想包含Google Analytics腳本,所以我建立了一個名為TrackingCode的元件作為單獨的js檔案。
我的_app.tsx檔案如下: