我对使用 HTMLRewriter 完全陌生,但有一些一般的 js/html 经验。我的任务相对简单,但我真的不确定 HTMLRewriter 是如何工作的。我需要做的是;
检索静态 HTML 页面 从之前部署的 JSON 响应中获取链接 使用 HTMLRewriter 将这些链接添加到静态 HTML 页面 从 Worker 返回转换后的 HTML 页面 我有 url “https://static-links-page.signalnerve。 workers.dev/”,但它不是本地的。所以我想知道的是;为了使用 HTMLRewriter 进行更改,复制/存储此静态 html 页面的正确方法是什么?
其次,我应该如何使用 HTMLRewriter 将我自己的 JSON url 数组添加到检索到的 HTML 页面中?我读到了 setInnerContent 函数,但不确定这是否是我应该使用的。
最后,我很确定这很简单,但是返回修改后的 html 页面的正确方法是什么?
同样,我的经验是一起编写 html/js,所以我几乎没有在单个 js 文件中做所有事情的经验,据我所知,这是 cloudflare 的最大好处之一。我可能会错误地处理这个问题,提出错误的问题,或者完全偏离轨道,因此非常感谢任何帮助。
到目前为止,我的代码虽然存在明显缺陷,但如下:
addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request))
})
/**
* Respond with hello worker text
* @param {Request} request
*/
var myArray = [
{
"name": "Github", "url": "https://github.com/"
},
{
"name": "LinkedIn", "url": "https://linkedin.com/"
},
{
"name": "Firebase", "url": "https://test-login-1573079166139.firebaseapp.com/"
}
]
async function handleRequest(request) {
//I am not sure if this is the correct way to copy/store a webpage
var basic_response = fetch('https://static-links-page.signalnerve.workers.dev');
//I know I have to do something here with this .on() function
const rewriter = new HTMLRewriter(basic_response)
.on()
const url = new URL(request.url)
console.log(rewriter);
var pathname = url.pathname;
if (pathname == '/links')
{
var obj = JSON.stringify (myArray);
return new Response(obj, {
headers: { 'content-type': 'application/json' },
})
}
else
{
var result = JSON.stringify (rewriter);
//This does not work, and I am not sure what the correct way
//to return my modified webpage would be
return new Response(rewriter, {
headers: { 'content-type': 'application/json' },
})
}
}