Code Monkey home page Code Monkey logo

Comments (12)

albert438 avatar albert438 commented on July 26, 2024 3

@yuzhoulangzik Confirmed. I guess it's a conflict between JSPatch and UIWebvView, for both of them use JSCore.framework. It seems that it's unable to init UIWebView in JSPatch. I start the UIWebview in appdelegate and it worked.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    UIWebView *view = [[UIWebView alloc]init];   //Useless. Just to load the UIWebview framework.
    view.frame = CGRectZero;

    [JPEngine startEngine];
   //.......

    return YES;
}

from jspatch.

yuzhoulangzik avatar yuzhoulangzik commented on July 26, 2024 2

@albert438
//defineClass('UIWebView',{

// loadRequest :function(request){
// self.valueForKeyPath("documentView.webView.mainFrame.javaScriptContext")
// self.ORIGloadRequest(request)
// }
// })

overwrite loadRequest it work

from jspatch.

bang590 avatar bang590 commented on July 26, 2024

What did you mean?

from jspatch.

yuzhoulangzik avatar yuzhoulangzik commented on July 26, 2024

loadweb : function() {
var webView = UIWebView.alloc().initWithFrame(self.view().frame())
webView.setDelegate(self)
var url = NSURL.URLWithString("https://www.baidu.com/")
var request = NSURLRequest.alloc().initWithURL(url)
self.view().addSubview(webView)
webView.loadRequest(request)
}

Uploading 屏幕快照 2015-07-14 上午11.18.20.png…

from jspatch.

albert438 avatar albert438 commented on July 26, 2024

missed require()

var webView = require('UIWebView').alloc().initWithFrame(self.view().frame())

from jspatch.

yuzhoulangzik avatar yuzhoulangzik commented on July 26, 2024

@albert438 had add require('UIWebView'),
2015-07-14 12 54 03

from jspatch.

huohuoluo avatar huohuoluo commented on July 26, 2024

in our app, I write [JPEngine startEngine] in

  • (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    }

and all the viewcontroller that contains a webview will crash.

I think [JSPatch startEngine] should be called after webview calss something init (lazy load).

from jspatch.

bang590 avatar bang590 commented on July 26, 2024

Now we can use -performSelectorInOC API to avoid the conflict of JavaScriptCore and UIWebView:

loadweb : function() {
    return UIWebView.performSelectorInOC('new', [], function(ret) {
        var webview = ret;
        webView.setDelegate(self)
        var url = NSURL.URLWithString("https://www.baidu.com/")
        var request = NSURLRequest.alloc().initWithURL(url)
        self.view().addSubview(webView)
        webView.loadRequest(request)
    })
}

https://github.com/bang590/JSPatch/wiki/performSelectorInOC-%E4%BD%BF%E7%94%A8%E6%96%87%E6%A1%A3#uiwebview%E4%BE%8B%E5%AD%90

from jspatch.

ganvinalix avatar ganvinalix commented on July 26, 2024

@albert438 this can be work for me ,but send a new version to appstore

from jspatch.

lynulzy avatar lynulzy commented on July 26, 2024

@bang590 问下邦神,在需要覆盖的方法里没有直接调用uiwebview,但是某些代码会唤起带webview的viewcontroller,这种情况应该对需要覆盖的整个方法执行performSelectorInOC 吗?

from jspatch.

lynulzy avatar lynulzy commented on July 26, 2024

上段代码

defineClass("AppDelegate", {
	application_openURL_sourceApplication_annotation: function(application, url, sourceApplication, annotation) {
		
            if (url.absoluteString().isEqualToString("***://")) {
			return 1
		}
		// self.ORIGapplication_openURL_sourceApplication_annotation(application, url, sourceApplication, annotation);
	}
})

其中注释掉的那句,能否使用PerformSelectorInOC呢?

from jspatch.

xmw-simon avatar xmw-simon commented on July 26, 2024

大神,UIWebView.performSelectorInOC这个api在初始化UIWebView之后,WebView里面的点击事件全部失效了!!

from jspatch.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.