[webkit-dev] Javascript and WebCore

Maciej Stachowiak mjs at apple.com
Sun Oct 25 16:09:46 PDT 2009


On Oct 25, 2009, at 2:36 PM, Alexander Cohen wrote:

>
> On Oct 25, 2009, at 5:23 PM, Maciej Stachowiak wrote:
>
>>
>> On Oct 25, 2009, at 2:01 PM, Alexander Cohen wrote:
>>
>>>
>>> In the events of a tag, i needed to add checks to see what type of  
>>> script was being called. A lot if not all of the time, we will  
>>> usually find a "javascript:" in the event code so i can also look  
>>> there for my defined scripting language and call into the right  
>>> code.
>>
>> Attribute event listeners do not usually have "javascript:" in  
>> them. Here is an example from Google's home page:
>> <a href="http://images.google.com/imghp?hl=en&tab=wi"  
>> onclick=gbar.qs(this) class=gb1>Images</a>
>> Notice that the onclick value doesn't start with javascript:. You  
>> are probably thinking of javascript: URLs in links, like this:
>>
>> <a href="javascript:callSomething()">
>>
>> You could invent a new URL scheme that runs your scripting language  
>> instead of JavaScript, but I don't think there is anything you can  
>> do about onclick handlers, unless you're willing to break  
>> compatibility with existing Web content.
>
> You're right. But this does give an opportunity for my scripting  
> language to get through since executing mine as javascript will  
> probably result in an error. I can definitely catch that and check  
> for another language.

I think that would be fragile, especially if polyglot or near-polyglot  
programs are possible. Unfortunately, inline event listeners were  
never designed with the idea of multiple scripting languages in mind.  
Fortunately, you can add event listeners just fine using code in a  
<script> element, so you don't lose much by not supporting them for a  
new scripting language.

> Just by curiosity, would it be bad to do something like this (notice  
> the "newscriptinglang:" in the onload ):
>
> <a href="http://images.google.com/imghp?hl=en&tab=wi"  
> onclick=newscriptinglang:gbar.qs(this) class=gb1>Images</a

That onclick handler is a valid JavaScript program,  
"newscriptlanglang:" is interpreted as a goto label. Whether there is  
Web content out there accidentally doing that, I don't know.


If you really want to come up with something, then I think your best  
bet would be to declare the scripting language for event listeners  
using an explicit mechanism. One possible way is to define a meta  
keyword so you could say <meta name="event-listener-language"  
content="application/x-fooscript">. That has the downside of being  
global for the whole document, so you would not be able to mix inline  
event listeners in both languages. It has the benefit that you won't  
misinterpret any existing Web content, but the downside that Web pages  
using the new scripting language may fail in mysterious ways (instead  
of just not running their scripts).

Regards,
Maceij




-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-dev/attachments/20091025/2421f4da/attachment.html>


More information about the webkit-dev mailing list