iOS - 在safari中如何在url中注入javascript

时间:2015-05-25 16:11:11

标签: html ios url mobile-safari

我将从应用程序中打开的网址直接发送到safari浏览器。由于网站尚未移动,我想注入javascript或某种放大效果。
以下是我到目前为止的情况:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];

此调用获取url并将其呈现在默认浏览器Safari中。我需要在此调用中添加javascript。我们不希望网址在应用程序中托管,这就是为什么我没有'使用uiwebview。

1 个答案:

答案 0 :(得分:0)

使用网页浏览时,无需在应用中托管网址。 因此,您可以在应用内网页视图中加载普通网页,然后使用scalesPageToFit或类似内容扩展内容。

如果您想使用iPhone浏览器,您需要使用JS,您可以在网址引用的网页中加载,也可以查看浏览器代理以确定它是iphone并相应地设置视图

由于应用程序是相互沙盒的,因此无法通过iPhone浏览器传递更多内容。正如我所看到的,openURL甚至没有指定使用哪种浏览器。

不需要在应用程序中托管Web内容,您可以加载外部URL。 (或者您可以只创建一个本地页面和iframe来显示您想要显示的网络资源)

这是您添加网页视图并加载外部网址的方式。

UIWebView *tempWebview = [[UIWebView alloc]initWithFrame:theFrame];
NSString *urlAddress = @"http://www.apple.com";
NSURL *url = [NSURL URLWithString:urlAddress];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
self.myWebView = tempWebview;
[tempWebview loadRequest:requestObj];
[tempWebview release];
myWebView.delegate=self; 

如果您需要从Objective-C端注入一些javascript,您可以使用:

- (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script;

Here是关于从objective-c接口webview的更多信息。

您还可以添加额外的后端或在应用层中添加代理

您可以控制添加更多javascript逻辑来设置浏览器等,例如使用iframe等。

您可以将css转换应用于iframe:

iframe {
    -moz-transform: scale(0.25, 0.25); 
    -webkit-transform: scale(0.25, 0.25); 
    -o-transform: scale(0.25, 0.25);
    -ms-transform: scale(0.25, 0.25);
    transform: scale(0.25, 0.25); 
    -moz-transform-origin: top left;
    -webkit-transform-origin: top left;
    -o-transform-origin: top left;
    -ms-transform-origin: top left;
    transform-origin: top left;
    border: solid #ccc 10px;
}

http://jsfiddle.net/6QMcX/