[whatwg] "first script" and impersonating other pages - pushState(url)
Mike Wilson
mikewse at hotmail.com
Mon Aug 31 06:44:45 PDT 2009
Ian Hickson wrote:
>
> On Fri, 21 Aug 2009, Mike Wilson wrote:
> >
> > I'm currently wrapping my head around the notion of
> > "first script" in the spec [1]. It's description is
> > a bit terse and the subject seems non-trivial, so
> > maybe the text could be fleshed out some?
> >
> > Section 6.1.5 "Groupings of browsing contexts"
> > says:
> > | Each unit of related similar-origin browsing
> > | contexts can have a first script which is used to
> > | obtain, amongst other things, the script's base
> > | URL to resolve relative URLs used in scripts
> > | running in that unit of related similar-origin
> > | browsing contexts. Initially, there is no first
> > | script.
> >
> > Does this implicitly say that this set of browsing
> > contexts should never execute script in parallel?
>
> No, that is implied by the event loop mechanism.
>
> http://www.whatwg.org/specs/web-apps/current-work/#event-loops
Ah thanks, that made it clear. 6.1.5 might get a little
easier to understand if some text mentioned the shared
event loop for this set of browsing contexts, or linked
to 6.5.4.
> > /pages/page1.html:
> > <script src="/scripts/script1.js">
> > *1 <button onclick="func1();">
> >
> > /scripts/script1.js:
> > function func1() { ... }
> > *2 func1();
> >
> > What is regarded as *first script* in these two
> > calls to func1() ?
> > *1: the implicitly generated event handler wrapper
> > in /pages/page1.html ?
> > *2: /scripts/script1.js
>
> Yes.
>
> > [...]
> > Imagine that I want my loaded page:
> > /pages/section1/thing1
> > be able to impersonate:
> > /pages/section2/thing2
> > how do you envision this to be structured?
> >
> > Something like this? :
> >
> > /pages/section1/thing1:
> > <script src="/pages/script.js">
> > <button onclick="impersonate();">
> >
> > /pages/script.js:
> > function impersonate() {
> > ...pushState(..., "/pages/section2/thing2");
> > }
>
> That would do it, yes.
Per *1 in the first example, wouldn't the first script
(corresponding to the button click) be the implicitly
generated event handler in:
/pages/section1/thing1
with a basedir of
/pages/section1
thereby making the call to:
...pushState(..., "/pages/section2/thing2");
throw SECURITY_ERR in step 2.2 of the pushState
algorithm?
Best regards
Mike
More information about the whatwg
mailing list