My first solution used innerHTML, but that wasn´t nice in my opinion. So i
tried it with window.location.href. I think I should go back to the first
solution or use an iframe.
But the problem with the javascript API also occurs if I localise the
index.html (default start file). If this file (for example:
locales/en/index.html) contains some javascript, such as
"widget.proxify(url)", the user agent can´t access the widget object.
Another problem I found occurs by using an iframe with a remote url inside
the widget. In that case the user agent always denies the access to
the property
'dispatchEvent' (wookie-wrapper.js, line 229), if the "
widget.preferences.setItem" function is called. The iframe itself doesn´t
modify anything of the widget.

2012/7/12 Scott Wilson <[email protected]>

> On 12 Jul 2012, at 12:10, Michael Hertel wrote:
>
> > Hello.
> >
> > I got a problem and I don´t know, if it´s my fault or a bug of Apache
> > Wookie. Is it allowed to use more than one html file for a localisation?
> > For example if I place a index.html and a example.html in the root of the
> > widget package and use the line "window.location.href='example.html';"
> in a
> > javascript tag inside the index.html. The problem is, if I use
> > "window.location.href='example.html';" in a widget in Apache Wookie, I
> > can´t access the widget javascript API from the example.html file. I
> can´t
> > find any information about this problem in the W3C widget specification.
> >
> > Thank you very much in advance for your answer.
>
> Hi Michael,
>
> The good news is I know what is causing this problem. The bad news is, I'm
> not sure whether we can - or should - fix it.
>
> The W3C spec generally assumes that a Widget has a single page (usually
> HTML) which is either specified in the content src="" attribute of
> config.xml, or is in the "default start files list" which includes
> "index.html, index.xml, index.svg" (etc). It also includes any localised
> variants of these files located in "locale folders" (e.g.
> "locales/de/index.html").
>
> The assumption is that a Widget starts at a (localised) start page, and
> then the browser does not navigate - that is, you don't change the
> window.location.href.
>
> So, what you are doing isn't really covered by the spec, which is the
> reason why its not behaving well in Wookie as we've mostly stuck to
> conforming to the spec.
>
> If you look inside any HTML file served by Wookie you'll notice it has a
> lot of injected JavaScript files, including the one that creates the
> window.widget object. These are injected into all start files listed by the
> widget (see above) but not any other files in your .wgt package, such as
> your "example.html".
>
> So, whats the solution? Well, it depends on why you want to show this
> other page, but there are alternatives to navigating to it. For example,
> you could use a lightbox instead to show the content; or use AJAX to
> replace content in index.html. Or open example.html in an iframe (making
> sure you call "window.parent.widget" rather than just "widget".) Do any of
> these sounds possible? If not, tell us the use-case and maybe we can think
> of another solution.
>
> If no workarounds are possible, you'd need to extend the widget parser to
> inject the widget API javascript into other HTML files that aren't start
> files, which would probably need an extension to the spec.
>
> Hope this helps,
>
> S

Reply via email to