2014-07-22 65 views
0

我目前運行下面的代碼來設置我的WKWebView的視口:WKWebView - 更改視口?

NSString* viewPortjs = [NSString stringWithFormat:@"document.querySelector('meta[name=viewport]').setAttribute('content', 'width=%dpx;', false);", (int) webView.frame.size.width]; 
[webView evaluateJavaScript:viewPortjs completionHandler:nil]; 

我可以看到,如果代碼發現選擇viewport,它會正確設置它,但我想補充的能力如果它不存在,則將此行添加到DOM。當談到Javascript時,我是一個noob,所以我不知道如何改變這段代碼來處理這種情況,如果該選擇器不存在並添加它。誰能幫我嗎?謝謝!

回答

3

這是將完成你想要的JavaScript:

var myCustomViewport = 'width=320px'; 
var viewportElement = document.querySelector('meta[name=viewport]'); 
if (viewportElement) { 
     viewportElement.content = myCustomViewport; 
} else { 
    viewportElement = document.createElement('meta'); 
    viewportElement.name = 'viewport'; 
    viewportElement.content = myCustomViewport; 
    document.getElementsByTagName('head')[0].appendChild(viewportElement); 
} 

對於你的使用情況:

NSString* viewPortjs = [NSString stringWithFormat:@"var myCustomViewport = 'width=%dpx'; var viewportElement = document.querySelector('meta[name=viewport]');if (viewportElement) {viewportElement.content = myCustomViewport;} else {viewportElement = document.createElement('meta'); viewportElement.name = 'viewport'; viewportElement.content = myCustomViewport; document.getElementsByTagName('head')[0].appendChild(viewportElement);}", (int) webView.frame.size.width]; 
+1

不錯!但是你實際上並沒有添加你在else腿中創建的viewportElement。它應該有這個:document.getElementsByTagName('head')[0] .appendChild(viewportElement) – Nancy

+0

@Nancy謝謝你捕捉,我更新了我的答案。 – weiyin