Content-scripts mit 'run_at' auf 'document_end", aber es ändert DOM, nachdem die Seite einmal geladen ist
In meiner extension, die ich bin versucht zu ändern die URLs der <img>
- tags im DOM zu https://...
ich habe den run_at
Attribut document_end
, aber im Gegensatz zu Chrome, Dokumentation, es ändert DOM nach der Seite sub-Ressourcen (Bilder) werden einmal angezeigt (die Bilder sind Faust angezeigt, für einen kurzen (aber nervig), dann verschwindet als https wird nicht unterstützt für diese Bilder). Ich erwarte, wenn https wird nicht unterstützt für Bilder, sollten Sie nicht angezeigt werden, obwohl für eine kurze Weile. Der code ist der folgende.
manifestieren.json:
...
"content_scripts": [
{
"matches": [
"http://*/*",
"https://*/*"
],
"js": ["content.js"],
"all_frames": true,
"run_at": "document_end"
}
],
...
content.js:
images = document.getElementsByTagName("img");
for (var i = 0; i < images.length; i++)
if (images[i].src.indexOf("http://") === 0)
images[i].src = images[i].src.replace("http://", "https://");
- Sie werden bessere Ergebnisse mit der
chrome.webRequest
api umleiten alle Bild-Anfragen. - Ich war ursprünglich mit
webRequest
- API, um das upgrade-image-Anforderung für https inonBeforeRequest
, aber ich habe Probleme bei der Umlenkung dann zurück auf http wenn https-redirect-Fehler. Ich brauche eine Möglichkeit zum umleiten von Bild-Anfragen in meinemtimeout_fun
.redictUrl
funktioniert nicht. - Es könnte Arbeit für die erste Umleitung. Sie müssen, leiten Sie Sie wieder in Ihrem code, wenn Sie scheitern
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich vermute, dass dies ist, weil Sie ein Skript asynchron ausgeführt wird. Chrome nur garantiert, dass das DOM bereit ist, für
document_end
content-Skripte. Vielleicht könnten Sie injizieren css aufdocument_start
macht alle Bilder unsichtbar vor Ihrer Verarbeitungdocument_start
aber keine änderung.