Получение общего размера прокрутки WebView (размер содержимого HTML) - PullRequest
4 голосов
/ 05 сентября 2011

Я пробую много вещей, разместил здесь много вопросов, но мне все еще не удается получить минимальный размер, необходимый для размещения HTML-страницы в Web-наборе Cocoa WebKit.
Я сделал странные манипуляции с DOM, где я могу получить приблизительный размер содержимого HTML, как вы можете видеть на картинке, я изменяю размер окна на основе этого и почти работаю, но я понимаю, что это так: 1002 * Если WebView достаточно интеллектуален, чтобы показывать точные полосы прокрутки (конечно, это так), то почему же нет интерфейса, чтобы программист мог получить это значение? Есть ли способ, который вы знаете?

PS: пожалуйста, не предоставляйте решения javascript, мне нужно реализовать это из приложения. В любом случае html API как Webkit должен быть более разборчивым в содержании, чем размещенный код javascript, не так ли?

enter image description here

Ответы [ 2 ]

0 голосов
/ 28 июля 2015

Хотя решение Алек Горге работало для меня, при помещении кода в метод делегата webViewDidFinishLoad я обнаружил, что, по крайней мере, в iOS (и, вероятно, также в OSX Webkit) я могу получить высоту веб-представленияточно так же используя этот код:

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    int h = webView.scrollView.contentSize.height;
    self.myWebViewHeightConstraint.constant = h;
}
0 голосов
/ 05 сентября 2011

Вам нужно использовать Javascript, чтобы получить правильную высоту.

Адаптировано из: Как получить высоту всего документа с помощью JavaScript?

(function () {
    var body = document.body,
        html = document.documentElement;

    return Math.max( body.scrollHeight, body.offsetHeight, 
                        html.clientHeight, html.scrollHeight, html.offsetHeight );
})();

Этот Javascriptдаст вам высоту HTML.Вы можете вставить его в WebView следующим образом:

NSString *height = [webView stringByEvaluatingJavaScriptFromString:@"(function(){var a=document.body,b=document.documentElement;return Math.max(a.scrollHeight,a.offsetHeight,b.clientHeight,b.scrollHeight,b.offsetHeight)})();"];

height теперь содержит высоту HTML в виде строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...