2017-04-26 11 views
1

私はWKWebview.evaluateJavaScript()を使用してjavascriptを実行します.JavaScriptから文字列、オブジェクト、配列を取得できます。JavaScriptを実行するとサポートされない戻り型

evaluateJavaScript("document.getElementById('title').innerHTML;") 
/* 
output: 
Optional(hhhhhhhhhhhhhh) 
*/ 

evaluateJavaScript("[1,2];") 
/* 
output: 
Optional(<__NSArrayM 0x17005faa0>(
1, 
2 
) 
*/ 

evaluateJavaScript("{a:1, b:2};") 
/* 
output: 
Optional({ 
    a = 1; 
    b = 2; 
}) 
*/ 

私は

evaluateJavaScript("document.getElementById('test').getBoundingClientRect();") //an object of { x: 0, y: 0, width: 0, height: 0, top: 0, right: 0, bottom: 0, left: 0 }

このコードを実行している間、私はこのエラーを取得し、

オプション(エラードメイン= WKErrorDomainコード= 5 のUserInfo "JavaScriptのサポートされていない戻り値の型を実行します" = {NSLocalizedDescription = JavaScriptがサポートされていない戻り値の型を実行する})nil

ご協力いただきありがとうございます。

+0

ならない '{:1、B:2};' 'こと({:1、B:2})。 '? – Xufox

+0

'{a:1、b:2};はここでうまくいきます。 –

答えて

0

私はここでdocument.getElementById('liveMovie').getBoundingClientRect();の結果は迅速にサポートしていないと思います。

だから、私はこのような配列に変更し、

self.wk.evaluateJavaScript("var rect = document.getElementById('liveMovie').getBoundingClientRect();[rect.left, rect.top];") { 
     (result, error) -> Void in 
     if((result) != nil) 
     { 
      self.player?.view?.frame.origin.x = (result as! Array)[0] 
      self.player?.view?.frame.origin.y = (result as! Array)[1] 
     } 
    } 
関連する問題