cordova-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sergey Grebnov (JIRA)" <j...@apache.org>
Subject [jira] [Comment Edited] (CB-9445) executeScript callbacks not working for iOS
Date Thu, 19 Nov 2015 11:26:11 GMT

    [ https://issues.apache.org/jira/browse/CB-9445?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15013379#comment-15013379
] 

Sergey Grebnov edited comment on CB-9445 at 11/19/15 11:25 AM:
---------------------------------------------------------------

Here is my code (no other changes)

{code}
- (void)injectDeferredObject:(NSString*)source withWrapper:(NSString*)jsWrapper
{
    NSLog(@"injectDeferredObject source: %@; wrapper: %@", source, jsWrapper);

    // Ensure an iframe bridge is created to communicate with the CDVInAppBrowserViewController
    [self.inAppBrowserViewController.webView stringByEvaluatingJavaScriptFromString:@"(function(d){if(d.getElementById('_cdvIframeBridge'))
return; var e = _cdvIframeBridge = d.createElement('iframe');e.id='_cdvIframeBridge'; e.style.display='none';d.body.appendChild(e);})(document)"];

    if (jsWrapper != nil) {
        NSData* jsonData = [NSJSONSerialization dataWithJSONObject:@[source] options:0 error:nil];
        NSString* sourceArrayString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
        if (sourceArrayString) {
            NSString* sourceString = [sourceArrayString substringWithRange:NSMakeRange(1,
[sourceArrayString length] - 2)];
            NSString* jsToInject = [NSString stringWithFormat:jsWrapper, sourceString];
            NSLog(@"stringByEvaluatingJavaScriptFromString %@", jsToInject);
            [self.inAppBrowserViewController.webView stringByEvaluatingJavaScriptFromString:jsToInject];
        }
    } else {
        [self.inAppBrowserViewController.webView stringByEvaluatingJavaScriptFromString:source];
    }
}
{code}


was (Author: sgrebnov):
Here is my code (no other changes)

{code}
- (void)injectDeferredObject:(NSString*)source withWrapper:(NSString*)jsWrapper
{
    NSLog(@"injectDeferredObject source: %@; wrapper: %@", source, jsWrapper);

    // Ensure an iframe bridge is created to communicate with the CDVInAppBrowserViewController
    [self.inAppBrowserViewController.webView stringByEvaluatingJavaScriptFromString:@"(function(d){if(document.getElementById('_cdvIframeBridge'))
return; var e = _cdvIframeBridge = d.createElement('iframe');e.id='_cdvIframeBridge'; e.style.display='none';d.body.appendChild(e);})(document)"];

    if (jsWrapper != nil) {
        NSData* jsonData = [NSJSONSerialization dataWithJSONObject:@[source] options:0 error:nil];
        NSString* sourceArrayString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
        if (sourceArrayString) {
            NSString* sourceString = [sourceArrayString substringWithRange:NSMakeRange(1,
[sourceArrayString length] - 2)];
            NSString* jsToInject = [NSString stringWithFormat:jsWrapper, sourceString];
            NSLog(@"stringByEvaluatingJavaScriptFromString %@", jsToInject);
            [self.inAppBrowserViewController.webView stringByEvaluatingJavaScriptFromString:jsToInject];
        }
    } else {
        [self.inAppBrowserViewController.webView stringByEvaluatingJavaScriptFromString:source];
    }
}
{code}

> executeScript callbacks not working for iOS
> -------------------------------------------
>
>                 Key: CB-9445
>                 URL: https://issues.apache.org/jira/browse/CB-9445
>             Project: Apache Cordova
>          Issue Type: Bug
>          Components: Plugin InAppBrowser
>    Affects Versions: 5.1.1
>         Environment: Cordova 5.1.1 (CLI), ios 3.8.0, android 4.0.2, cordova-plugin-inappbrowser
1.0.1 (NPM)
>            Reporter: Scott Seitz
>            Assignee: jcesarmobile
>              Labels: Triaged, iOS
>
> Can someone please check to see if they are encountering the same problem I am in the
environment I've listed? (latest released builds of everything I think)
> I open an inappbrowser window and then run an executeScript command using "code:" (not
"file:").  Everything works fine on Android, but on iOS, it simply will NOT fire the callback
function after executing the injected code.  Make the "code:" as simple as you like to test
it and see if you can get a callback to fire.  I've dumbed it down as much as possible and
can't get one to fire.  I know that all instances of code I've injected have run fine in the
iab by using the console (against the iab) to check for the variables I was creating in the
code.  I can't even get a callback to fire that doesn't expect a parameter to be passed back...
> Many thanks,
> Scott



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@cordova.apache.org
For additional commands, e-mail: issues-help@cordova.apache.org


Mime
View raw message