如何更改WebView的网页位置? OSX

时间:2012-10-20 01:22:31

标签: objective-c macos cocoa webview webkit

我们说我有一个加载twitter.com的WebView 这是我的WebView中出现的内容: enter image description here

这就是我要展示的内容: enter image description here

如何在WebView上更改网站的默认左上角位置以显示同一网站的另一个位置?

4 个答案:

答案 0 :(得分:2)

我使用它来移动它(你需要设置frameLoadDelegate):

-(void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame
{

    if (frame == self.myWebview.mainFrame)
    {
        DOMDocument *mainDoc = [self.myWebview.mainFrame DOMDocument];
        DOMNodeList *list = [mainDoc getElementsByClassName:@"front-signin js-front-signin"];
        DOMNode *loginElement = [list item:0];
        NSRect myRect = loginElement.boundingBox;
        [self.myWebview stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"window.scrollTo(%d,%d);", (int)myRect.origin.x, (int)myRect.origin.y]];
    }
}

“front-signin js-front-signin”是www.twitter.com源html中使用的类的名称。

因此,它很容易依赖于随时可能发生的变化。

在这种情况下,还有一个不移动的标题。因此要么考虑它并显示它,要么将视图移动到此标题的大小并隐藏它。

您需要调整scrollTo调用,使其在视图中居中。

你可能想要考虑一旦加载后淡出视图,导致滚动有点生涩,而不是像osx那样。

但除此之外,它可以起作用; - )

答案 1 :(得分:0)

您可以在UIWebView中执行javascript:

[webView stringByEvaluatingJavaScriptFromString:@"window.pageYOffset=200;"];

这应该将窗口向下滚动200像素。

答案 2 :(得分:0)

您可以在OS X上使用以下内容:

  

[webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"window.scrollTo(%f, %f)", xPos, yPos]];

答案 3 :(得分:-3)

您还可以使用webview的scrollView contentOffset。

UIWebView * webView = [[UIwebView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
[webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.twitter.com"]]];
[webView.scrollView setContentOffset:CGPointMake(50, 60)];
[webView release];