如果 URL 包含引數,我正在嘗試使用 Cloudflare Workers 注入一些代碼?beta。
這是我嘗試過的:
addEventListener("fetch", (event) => {
event.respondWith(
handleRequest(event.request).catch(
(err) => new Response(err.stack, { status: 500 })
)
);
});
class ElementHandler {
element(element) {
element.append(`<style>.test {display:none}</style>`, { html: true });
}
}
async function handleRequest(request) {
const url = new URL(request.url)
const res = await fetch(request)
if (url.pathname.includes("?beta")) {
return new HTMLRewriter().on("head", new ElementHandler()).transform(res)
}
else {
return fetch(request)
}
}
不幸的是,它不起作用...如果我將 ?beta 添加到 Worker 的 URL,則代碼不會添加到頭部。
我沒有從控制臺收到任何錯誤。任何人都可以發現有什么問題嗎?
uj5u.com熱心網友回復:
他的問題在這里:
if (url.pathname.includes("?beta")) {
url.pathname僅包含 URL 的路徑部分。但是,?它之后的所有內容都不會被視為路徑的一部分。相反,它是url.search. 所以你可以這樣做:
if (url.search.includes("?beta")) {
但是當有多個引數時,這可能會中斷,比如?foo=bar&beta. 相反,最好使用url.searchParams,它是所有引數的鍵/值映射:
if (url.searchParams.has("beta")) {
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/482965.html
標籤:javascript 无服务器 cloudflare 工作者
上一篇:在rails6.0.0中使用外部javascript庫時遇到問題
下一篇:更改下拉串列中箭頭的狀態
