在我的扩展中,我使用 .复制网页的 HTML 内容$.html()
。但是,这样做会丢失一些值,例如<select>
元素。为了解决这个问题,我给网页的每个元素一个唯一的 id,然后获取 HTML 内容,在那个 HTML 内容中,我尝试正确设置值。然而,这并没有奏效。这是代码片段:
$( function()
{
$('*').each( function(i)
{
$(this).attr('uid', i);
});
});
var html_data = $("html").html();
$("option:selected", html_data).removeAttr("selected");
var all_selected = $("option:selected");
for (var i = 0; i < all_selected.length; i++)
{
var uid = $(all_selected[i]).attr("uid");
$("[uid="+uid+"]", html_data).attr("selected", true)
}
问题是,当我执行“ $("option:selected", html_data).removeAttr("selected");
”时,它确实返回删除了“选定”的元素,但原始 html_data 保持不变。似乎 html_data 是只读的。我还尝试将这些标签替换为来自.removeAttr("selected")
. 但是,这也不起作用。
有解决办法吗?
更新:从第一个答案来看,似乎有些混乱。让我试着澄清一下:
- 我无法直接在网页上更改“选定”值。
- 我想获取整个网页并将其发送到我的后端控制页面(background.js)。
- 但是,当我使用 .html() 将整个网页发送到后端时,选定的值会丢失。