【问题标题】:javascript file is not loading and stringByEvaluatingJavaScriptFromString also not executing?javascript 文件未加载且 stringByEvaluatingJavaScriptFromString 也未执行?
【发布时间】:2017-09-16 17:29:02
【问题描述】:

我有一个应用程序,我正在从服务器下载一个 html 文件并将其显示在 uiwebview 中,

NSArray *paths = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask ,YES );
NSString *documentsDirectory = [paths firstObject];
NSString *path = [documentsDirectory stringByAppendingPathComponent:[dictionary valueForKey:@"htmlfilename"]];

NSError *err;
NSString *html = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&err];

[self.webview loadHTMLString:html baseURL:[NSURL fileURLWithPath:path]];

像这样,在Didfinishload 之后,我正在加载一个 JS 文件,该文件像这样添加到我的应用程序包中

NSString *javaScript=[NSString stringWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"foo" ofType:@"js"] encoding:NSUTF8StringEncoding error:nil];

[webview stringByEvaluatingJavaScriptFromString:javaScript];

点击按钮后,我打电话给stringByEvaluatingJavaScriptFromString,但它不起作用。甚至那个 javascript 文件本身也没有加载。有人可以指导我吗?

【问题讨论】:

  • 你应该使用 javascript swift 或 Objective c 桥接框架或库,这是 PayUMoney Webview 使用的
  • 能分享一下 foo.js 的内容吗?也许该代码只是声明函数,而不是调用它们?
  • 如果您解释得更多,您可能会得到更好的答案。 “它不起作用”并没有告诉我们太多。你说“那个javascript文件本身没有加载”,但你怎么知道?我假设您正在谈论在按钮按下时加载的第二个 javascript 文件。但是您没有显示该代码。您试图确定究竟出了什么问题?
  • @fishinear 我在文件上的 js 方法上设置了一个警报作为 alert(''Hi"),这本身没有发生意味着 JS 文件没有正确加载,因为没有其他内容那个方法

标签: javascript jquery ios objective-c uiwebview


【解决方案1】:

您应该尝试使用 JavaScriptCore 框架在 Native iOS 中使用 JavaScript。这个框架允许访问 WebKit 的 JavaScript 引擎。早期这个框架支持 MAC,但现在它支持 iOS 并支持 swift/objective-c 和 javascript 之间的互操作性。如需进一步参考,请阅读以下链接。

https://www.raywenderlich.com/124075/javascriptcore-tutorial

这是我基于对您问题的理解的想法。但是,如果您有更多详细信息,我会尝试提供其他解决方案。

编码愉快!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-01
    • 1970-01-01
    • 2017-12-02
    • 2023-03-23
    • 1970-01-01
    • 2017-07-24
    • 2014-11-25
    相关资源
    最近更新 更多