how to execute javascript inside window from chrome?

Talk about code development, features, specific bugs, enhancements, patches, and similar things.
Forum rules
Please keep everything here strictly on-topic.
This board is meant for Pale Moon source code development related subjects only like code snippets, patches, specific bugs, git, the repositories, etc.

This is not for tech support! Please do not post tech support questions in the "Development" board!
Please make sure not to use this board for support questions. Please post issues with specific websites, extensions, etc. in the relevant boards for those topics.

Please keep things on-topic as this forum will be used for reference for Pale Moon development. Expect topics that aren't relevant as such to be moved or deleted.
BZZZZ

how to execute javascript inside window from chrome?

Unread post by BZZZZ » 2021-11-20, 11:16

this works on sites without CSP:

Code: Select all

Services.obs.addObserver({
  "observe":windowWithXray=>{
    try{
      windowWithXray.eval("console.log(123)")
    }catch(err){
      console.error(err)
    }
  }
},"content-document-global-created",false)
but on sites with CSP like https://developer.mozilla.org/en-US/ it Error: call to eval() blocked by CSP

how to execute javascript inside window with CSP?

User avatar
Moonchild
Pale Moon guru
Pale Moon guru
Posts: 31076
Joined: 2011-08-28, 17:27
Location: Tranås, SE
Contact:

Re: how to execute javascript inside window from chrome?

Unread post by Moonchild » 2021-11-20, 11:25

It is working exactly as-intended.

Script injection when CSP is enforced is tricky (on purpose, because that is exactly what CSP is meant to control!). You'll have to see how other extensions get around this.
"Remember, only you can prevent Earth's destruction by spelling Pale Moon with a space." -- Athenian200
Image

User avatar
moonbat
Knows the dark side
Knows the dark side
Posts: 3471
Joined: 2015-12-09, 15:45
Contact:

Re: how to execute javascript inside window from chrome?

Unread post by moonbat » 2021-11-21, 00:17

You can directly gain access to the DOM of a page displayed in a tab without trying to inject scripts. Take a look at Pure URL's code for how to do this. Specifically the pageModifier.init() function.
"One hosts to look them up, one DNS to find them and in the darkness BIND them."

Image
Linux Mint 20.1 Xfce x64 on HP i5-5200 laptop, 12 GB RAM.
AutoPageColor|PermissionsPlus|PMPlayer|Pure URL|RecordRewind|TextFX

BZZZZ

Re: how to execute javascript inside window from chrome?

Unread post by BZZZZ » 2021-11-24, 13:46

is this good way to inject javascript?

Code: Select all

{
  {
    const o={}
    Components.utils.import("resource://gre/modules/jsdebugger.jsm",o)
    o.addDebuggerToGlobal(globalThis)
  }
  const dbg=Debugger()
  Services.obs.addObserver({
    "observe":windowWithXray=>{
      try{
        const result=dbg.makeGlobalObjectReference(windowWithXray).executeInGlobal("console.log(1)")
        if(result.throw)console.error(result)
      }catch(err){
        console.error(err)
      }
    }
  },"content-document-global-created",false)
}

User avatar
Moonchild
Pale Moon guru
Pale Moon guru
Posts: 31076
Joined: 2011-08-28, 17:27
Location: Tranås, SE
Contact:

Re: how to execute javascript inside window from chrome?

Unread post by Moonchild » 2021-11-24, 16:13

OK this has nothing to do with browser development and you're clearly not listening to suggestions.
Locking thread.
"Remember, only you can prevent Earth's destruction by spelling Pale Moon with a space." -- Athenian200
Image

Locked