問題
Pushbullet は、Asus Nexus 7 の古いバージョンの Android が原因で発生したバグにより、デバイスを何千回も誤って追加しました。
膨大な数の削除 (それぞれ複数回のクリックが必要) は手動で行うには多すぎるため、これらのエントリをすべて(スクリプトを介して) プログラム的な方法で削除する必要があります。(そして、Pushbullet に連絡しましたが、彼らは役に立たないでしょう -- ビーフはありません。真剣に、私は完全に理解しています。また、PushBullet は素晴らしいです。)
Pushbulletのデバイスリストページにあるコード
もともと、クリックする必要があるボタンは次のように表示されます。
<table class="crud" style="width:100%;white-space:nowrap">
<tr>
<td><input type="text" placeholder="nickname" value="Sony D5803" name="nickname" onchange="window._handler[12].apply(null, arguments);" onblur="window._handler[13].apply(null, arguments);" onkeypress="window._handler[14].apply(null, arguments);" /></td>
<td>added 6 days ago</td>
<td><button class="hover-red" onclick="window._handler[15].apply(null, arguments);">Delete</button></td>
</tr>
<tr>
<td><input type="text" placeholder="nickname" value="Firefox" name="nickname" onchange="window._handler[20].apply(null, arguments);" onblur="window._handler[21].apply(null, arguments);" onkeypress="window._handler[22].apply(null, arguments);" /></td>
<td>added 4 months ago</td>
<td><button class="hover-red" onclick="window._handler[23].apply(null, arguments);">Delete</button></td>
</tr>
<-- I need to delete THESE entries below -->
<-- I need to delete THESE entries below -->
<-- I need to delete THESE entries below -->
<tr>
<td><input type="text" placeholder="nickname" value="Asus Nexus 7" name="nickname" onchange="window._handler[28].apply(null, arguments);" onblur="window._handler[29].apply(null, arguments);" onkeypress="window._handler[30].apply(null, arguments);" /></td>
<td>added 6 months ago</td>
<td><button class="hover-red" onclick="window._handler[31].apply(null, arguments);">Delete</button></td>
</tr>
<tr>
<td><input type="text" placeholder="nickname" value="Asus Nexus 7" name="nickname" onchange="window._handler[32].apply(null, arguments);" onblur="window._handler[33].apply(null, arguments);" onkeypress="window._handler[34].apply(null, arguments);" /></td>
<td>added 6 months ago</td>
<td><button class="hover-red" onclick="window._handler[35].apply(null, arguments);">Delete</button></td>
</tr>
<-- I need to delete THESE entries above -->
<-- I need to delete THESE entries above -->
<-- I need to delete THESE entries above -->
...
「削除」ボタンをクリックすると、「削除」ボタンが「キャンセル」ボタンに変わり、「削除」ボタンが「キャンセル」ボタンの隣の横に移動します。
アイテム/デバイスを削除するには、最初の [削除] ボタンをクリックしてから、2 番目の [削除] ボタンをクリックする必要があります。最初は「削除」ボタンのクラスは「.hover-red」ですが、クリックすると、更新された「削除」ボタンのクラスは「.red」になるため、「最初」と「2番目」と呼びます。
<tr>
<td><input type="text" placeholder="nickname" value="Asus Nexus 7" name="nickname" onchange="window._handler[32].apply(null, arguments);" onblur="window._handler[33].apply(null, arguments);" onkeypress="window._handler[34].apply(null, arguments);" /></td>
<td>added 6 months ago</td>
<td>
<-- this is what the button code changes to once clicking a "Delete" button -->
<button class="red" onclick="window._handler[39].apply(null, arguments);">Delete</button>
<button class="gray" onclick="window._handler[40].apply(null, arguments);">Cancel</button>
</td>
</tr>
これまでに試したこと
私は多くのスクリプトを試しましたが、いくつかはより単純で、より複雑なものもありましたが、どれも機能していないようです。これまでのところ、これは最良の結果をもたらします。ボタンをクリックしますが (順序はわかりません)、エントリは削除されません。このコードは 5 エントリに制限されています。これは、リスト全体を実行すると、結果が得られずに 5 分間続くためです。少なくともこの方法では、機能していないことがすぐにわかります。
console.logging を実行すると、適切なものがすべて選択されますが、クリックはまだ失敗するため、セレクターは正しいです。また、私のコードは常にリスト内のボタンの1つを開いたままにします(ボタンのクリックに成功し、最後にクリックされた「削除」ボタンは「削除」ボタンと「キャンセル」ボタンを一度その場所に残します)コードの実行が完了しました)。
function deleteAsus() {
var n;
$('.crud input[value="Asus Nexus 7"]').each(function(){
n++;
if (n =< 5) {
//console.log(this); //works!
//console.log($(this).parent().parent().find('.hover-red')); //works!
//console.log($(this).parent().parent().find('.red')); //works!
$(this).parent().parent().find('.hover-red').click().delay(3000).parent().parent().find('.red').click();
//$(this).parent().parent().find('.red').click();
} else {
return;
}
});
}
deleteAsus();
上記のコードでわかるように、私の最新の試みは、「最初の削除」ボタンをクリックしてから「2 番目の削除」ボタンをクリックするまでの間に遅延を置くことですが、これは何もしないようで、遅延はまったく機能していないようです。
自分のPushbulletアカウントを持っていない限り、「Pushbulletデバイス画面」コードを再作成することは実際には不可能であるため、これを支援するのは難しいことを知っています.私にお金を!)