相关疑难解决方法(0)

WKWebview - Javascript和本机代码之间的复杂通信

在WKWebView中,我们可以使用webkit消息处理程序调用ObjectiveC/swift代码,例如: webkit.messageHandlers.<handler>.pushMessage(message)

它适用于没有参数的简单javascript函数.但;

  1. 是否可以使用JS回调函数作为参数调用本机代码?
  2. 是否可以从本机代码向JS函数返回一个值?

javascript objective-c ios swift wkwebview

27
推荐指数
3
解决办法
3万
查看次数

在本机应用和网站之间共享凭据

我正在处理的应用程序允许用户登录启用OAuth的后端.因此,应用程序仅对身份验证令牌和用户元数据有用,而不是用户的凭据.

在应用程序中,用户可以点击在浏览器中打开链接的链接.这些资源也受OAuth保护,在登录本机应用程序期间获得的令牌也与Web相关.

我希望用户的凭据以标准OAuth方式从本机应用程序流向Web浏览器(通过将其作为Authorization标题包含在内).

似乎Android通过其共享凭据功能促进了这一点,但我找不到iOS的等价物.我确实找到了共享的Web凭据功能,但这似乎需要了解用户的凭据.

如何将OAuth令牌从我的原生应用程序流向它打开的Web浏览器?

security safari ios oauth-2.0

13
推荐指数
2
解决办法
3595
查看次数

如何将自定义HTTP标头设置为WKWebView发出的请求

我已经构建了一个包含WKWebView的应用程序,并且Web视图加载的网站支持多种语言.如何更改Accept-LanguageWKWebView或其他HTTP标头中的标头?

macos cocoa webkit ios swift

9
推荐指数
2
解决办法
7296
查看次数

覆盖XMLHttpRequest的send方法

我正在尝试通过覆盖XMLHttpRequest的send函数来记录(以及稍后修改)XMLHttpRequest发送到服务器的数据.我的函数将数据正确记录到控制台,但请求没有完成,因此浏览器会无限期地等待响应.任何想法代码有什么问题?

XMLHttpRequest.prototype.realSend = XMLHttpRequest.prototype.send;
var newSend = function(vData) { console.log("data: " + vData); realSend(vData); };
XMLHttpRequest.prototype.send = newSend;
Run Code Online (Sandbox Code Playgroud)

javascript xmlhttprequest

8
推荐指数
2
解决办法
1万
查看次数

将 Javascript 添加到 WKWebView

嗨,我知道这似乎是一个超级简单的问题,但我想将此 JS 添加到我的 WebView:

<script type='text/javascript' src='https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/MathJax.js?config=default&#038;ver=1.3.8'></script>
Run Code Online (Sandbox Code Playgroud)

现在显然我知道这是 HTML,但我不确定为了使用 JS 源代码应该在“evaluateJavaScript”中放入什么。对不起,如果这不是很清楚 - 我是 Swift 和 JS 的新手。谢谢!

我的快速代码:

func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
    self.webView.evaluateJavaScript("<script type='text/javascript' src='https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/MathJax.js?config=default&#038;ver=1.3.8'></script>") { (nil, error) in
        print(error)
    }
}
Run Code Online (Sandbox Code Playgroud)

ios swift wkwebview

5
推荐指数
1
解决办法
9061
查看次数