2 Stimmen

Chrome-Erweiterung macht Iframes durcheinander

Dies ist sehr seltsam, aber die Chrome-Erweiterung lädt die Inhaltdateien innerhalb der iframes. Ich hatte ein in den Übereinstimmungen des Inhaltskripts und habe es auf "http://*/*", "https://*/*" umgestellt. Es war sehr seltsam, weil es immer noch Seiten innerhalb der iframes geladen hat, obwohl die src des iframes nicht mit der Übereinstimmung übereinstimmte.

Ich habe ein Skript gefunden, um festzustellen, ob ein Objekt in ein iframe geladen wurde, und jetzt beeinflusst das Inhaltskript nichts, um Google AdChoices oder andere Anzeigen zu beeinflussen, aber notably jsfiddle funktioniert nicht, wenn meine Erweiterung aktiviert ist.

Ich würde den Code lieber nicht veröffentlichen, also sagen Sie mir bitte, welchen Code ich veröffentlichen muss.

Es schien, dass es nur funktioniert, wenn das Inhaltskript irgendeinen ungültigen Code hatte und überhaupt nicht funktionierte.

Tun das alle Erweiterungen? Wie könnte ich das beheben? Welcher Code könnte das möglicherweise bewirken?

Vielen Dank im Voraus.

Manifes:

{
  "name": "NA",
  "version": "1.0.9",
  "manifest_version": 2,
  "description": "NA",
  "browser_action":{
    "default_icon": {
      "19": "img/icon19.png",
      "38": "img/icon38.png"
    },
    "default_popup":"popup.html"
  },
  "permissions": [
    "storage",
    "tabs",
    "contextMenus"
  ],
  "background":{
    "scripts":["background.js"]
  },
  "icons": {
    "16": "img/icon16.png",
    "48": "img/icon48.png",
    "128": "img/icon128.png"
  },
  "content_scripts": [
    {
      "matches": ["http://*/*", "https://*/*"],
      "js": ["scripts/jquery-for-content-only.js","scripts/content.js"],
      "run_at": "document_end",
      "all_frames": true
    }
  ]
}

2voto

jmort253 Punkte 33083

Die Chrome-Erweiterungsmanifestdatei bestimmt, wie und wo Ihr Inhaltskript ausgeführt wird, nicht nur in Bezug auf die URL-Musterübereinstimmung, sondern auch darauf, ob diese auf Frames unterhalb der übergeordneten Seite angewendet werden:

Aus Googles "Content Scripts" Dokumentation:

Name: all_frames

Type: boolean

Beschreibung:

Optional. Steuert, ob das Inhaltskript in allen Frames der übereinstimmenden Seite oder nur im obersten Frame ausgeführt wird.

Standardmäßig auf false eingestellt, was bedeutet, dass nur der oberste Frame übereinstimmt.

Da Sie diese Eigenschaft auf true gesetzt haben, wird Ihr Skript in iframes ausgeführt. Setzen Sie entweder diese Eigenschaft auf false oder entfernen Sie sie, und das Skript sollte dann nur auf der übergeordneten Seite ausgeführt werden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X