So for future reference, I figured out how to add my local javascript.

This is what I do:

- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame
{
    if (frame == [sender mainFrame])
    {
        NSError *error = nil;
        
        // get the DOMDocument
        DOMDocument* domDocument = [frame DOMDocument];
        DOMElement* headElement= (DOMElement*)[[domDocument 
getElementsByTagName: @"head"] item: 0];
        // get the reference.js file
        NSString *path = [[NSBundle mainBundle] pathForResource: @"test" 
ofType: @"js"];
        NSString *js = [NSString stringWithContentsOfFile: path encoding: 
NSUTF8StringEncoding error: &error];
        
        if (js && headElement && error = nil)
        {
            // create a script element
            DOMElement* scriptElement = [domDocument createElement: @"script"];
            [scriptElement setAttribute: @"type" value: @"text/javascript"];
            
            // add the default css to it
            DOMText *jsText = [domDocument createTextNode: js];
            [scriptElement appendChild: jsText];
            
            // add it to <head>
            [headElement appendChild: scriptElement];
        }
    }
}


My test.js file looks like this:

function test()
{
    document.write("<p>This is a test.</p>");
}

test();


And all my webview shows is "This is a test".  It even picks up the css for the 
<p> element I declared in my custom css class! I didn't have to use 
stringByEvaluatingJavaScriptFromString, although it definitely was useful for 
debugging purposes.


Next, changing the content by stripping out some divs.


- Koen.




_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to