iOS - 在 safari 中如何在 url 中注入 javascript
iOS - how to inject javascript in url when in safari
我正在渲染 url 从应用程序直接打开到 safari 浏览器。我想注入 javascript 或某种放大效果,因为该网站尚未移动。
这是我目前所拥有的:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];
此调用获取 url 并将其呈现在默认浏览器 safari 中。我需要将 javascript 添加到此调用中。我们不希望 url 托管在应用程序中,这就是我不使用 uiwebview 的原因。
使用网络视图时,不需要在应用程序中托管 url。
因此,您可以在应用内 webview 中加载普通网页,然后使用 scalesPageToFit 或类似工具缩放内容。
如果你想使用 iPhone 浏览器,你需要求助于 JS,你可以在你的 URL 引用的页面中从网络加载它,也许可以查看浏览器代理确定它是 iphone 并相应地设置视图。
由于应用程序是相互隔离的,因此除了 url 之外,无法将更多内容传递给 iPhone 浏览器。正如我所见,openURL 甚至没有指定要使用的浏览器。
不需要在应用程序中托管网络内容,您可以加载外部 url。 (或者你也可以只做一个本地页面,把你想显示的网络资源放在iframe中)
这就是添加 webview 和加载外部视图的方式 url。
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;
}
我正在渲染 url 从应用程序直接打开到 safari 浏览器。我想注入 javascript 或某种放大效果,因为该网站尚未移动。
这是我目前所拥有的:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];
此调用获取 url 并将其呈现在默认浏览器 safari 中。我需要将 javascript 添加到此调用中。我们不希望 url 托管在应用程序中,这就是我不使用 uiwebview 的原因。
使用网络视图时,不需要在应用程序中托管 url。 因此,您可以在应用内 webview 中加载普通网页,然后使用 scalesPageToFit 或类似工具缩放内容。
如果你想使用 iPhone 浏览器,你需要求助于 JS,你可以在你的 URL 引用的页面中从网络加载它,也许可以查看浏览器代理确定它是 iphone 并相应地设置视图。
由于应用程序是相互隔离的,因此除了 url 之外,无法将更多内容传递给 iPhone 浏览器。正如我所见,openURL 甚至没有指定要使用的浏览器。
不需要在应用程序中托管网络内容,您可以加载外部 url。 (或者你也可以只做一个本地页面,把你想显示的网络资源放在iframe中)
这就是添加 webview 和加载外部视图的方式 url。
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;
}