Fügen Sie mithilfe der Skriptkomponente ein Skript in den Header von Next.js ein
P粉458913655
2023-08-25 08:55:35
<p>Ich möchte Tracking-Code aus einer Anwendung namens Zoho in den Head-Bereich jeder Seite meiner Next.js-Anwendung einfügen. Ich verwende eine Datei namens _document.tsx und sie funktioniert einwandfrei. Für ein verzerrtes Skript empfiehlt Next.js die Verwendung der Next.js-Skriptkomponente (https://nextjs.org/docs/messages/no-script-tags-in-head-component). Ich habe die Anweisungen befolgt und das Skript in Klammern eingefügt, aber es wurde ohne Fehlermeldung ignoriert.Kann ich diesen Code im Head-Abschnitt der Datei _document.tsx eingeben? Wäre es besser, es in eine separate Komponente aufzuteilen?</p>
<p>任何建议都将有所帮助</p>
<pre class="brush:php;toolbar:false;">Dokument importieren, {
HTML,
Kopf,
Hauptsächlich,
NextScript,
DocumentContext,
DocumentInitialProps,
} from "next/document";
Skript aus „next/script“ importieren;
Klasse MyDocument erweitert Document {
statisches asynchrones getInitialProps(
ctx: DocumentContext
): Promise<DocumentInitialProps> {
const initialProps = waiting Document.getInitialProps(ctx);
return { ...initialProps };
}
render() {
zurückkehren (
<Html lang="en">
<Kopf>
<meta charSet="utf-8" />
<Link
href="https://fonts.googleapis.com/css?family=PT+Sans&display=optional"
rel="stylesheet"
/>
<meta name="msapplication-TileColor" content="#596285" />
<meta
name="msapplication-config"
content="/favicon/browserconfig.xml"
/>
<meta name="theme-color" content="#ffffff" />
{/* für Zoho Marketing Automation */}
<Script id="zoho-ma">
{`var w = window;
var p = w.location.protocol;
if (p.indexOf("http") < 0) {
p = "http" + ":";
}
var d = Dokument;
var f = d.getElementsByTagName("script")[0],
s = d.createElement("script");
s.type = "text/javascript";
s.async = false;
if (s.readyState) {
s.onreadystatechange = function () {
if (s.readyState == "geladen" || s.readyState == "vollständig") {
s.onreadystatechange = null;
versuchen {
Loadwaprops(
"myid#",
"myid#",
"myid#",
"myid#",
„0,0“
);
} fangen (e) {}
}
};
} anders {
s.onload = function () {
versuchen {
Loadwaprops(
"myid#",
"myid#",
"myid#",
"myid#",
„0,0“
);
} fangen (e) {}
};
}s.src = p + "//ma.zoho.com/hub/js/WebsiteAutomation.js";
f.parentNode.insertBefore(s, f);`}
</Script>
{/* Zoho-Marketingautomatisierung beenden */}
</Kopf>
<Körper>
<Haupt />
<NextScript />
<div id="benachrichtigungen"></div>
</body>
</Html>
);
}
}
Standard-MyDocument exportieren;</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文件如下: