私の拡張機能では、を使用して Web ページの HTML コンテンツを複製しています$.html()
。<select>
ただし、これを行うと、要素などの一部の値が失われます。この問題を解決するために、Web ページの各要素に一意の 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")
。しかし、それもうまくいきませんでした。
これに対する解決策はありますか?
更新: 最初の回答から、混乱があるようです。それを明確にしてみましょう:
- 「選択した」値を Web ページで直接変更することはできません。
- Web ページ全体を取得して、バックエンド制御ページ (background.js) に送信したいと考えています。
- ただし、.html() を使用して Web ページ全体を取得してバックエンドに送信すると、選択した値が失われます。