【问题标题】:iOS App & jQuery Mobile Site - Include JS file ONLY if page is viewed in native iPhone appiOS 应用程序和 jQuery Mobile 站点 - 仅当在本机 iPhone 应用程序中查看页面时才包含 JS 文件
【发布时间】:2012-07-23 03:24:38
【问题描述】:

我有一个使用 jQuery Mobile 构建的移动网站。我目前正在设计一个带有单个 webView 的 iOS 原生应用来显示这个移动网站。

问题:

如果在普通的移动浏览器中查看jQuery移动网页,我希望一切正常。 但是如果在我正在设计的 iPhone 应用程序(不是 Safari.app)中使用 webView 查看网页,我想在网页上添加一行代码以引入一些自定义 JS。

这是我想要添加到页面的内容仅当在我的 iPhone 应用的 webView 中查看时:

<script type="text/javascript" src="http://www.example.com/mobile/js/custom-jqm-defaults.js"></script>

此代码需要在加载 jQuery Mobile 之前拉入 (according to the jQuery mobile docs)。这可能吗?如果是这样,你能指出我正确的方向并给我一些代码吗?

编辑

我找到了this link,Facebook 借此检测他们是否在应用程序中被查看。有没有另一种方法可以做到这一点显然不使用 FB API?这是他们的代码:

if (FB.UA.nativeApp()) {
  // Hide your credits stuff
}

【问题讨论】:

  • 就像我说的,Facebook 原生应用也有一个自定义的用户代理,这很可能是这个函数如何检测它是否是原生应用。他们的看起来像this

标签: objective-c xcode ios5 jquery-mobile if-statement


【解决方案1】:

您可以在 NSURLRequest 中更改用户代理,然后在您的服务器上检查该代理。

应用端改成easy

【讨论】:

  • 我不确定你的意思?运行该应用程序的每个人都将使用 iPhone,但 iPhone 也可能会在 Safari.app 中打开移动网站
  • 当客户端请求网页时,客户端的用户代理在请求标头中(操作系统、浏览器等)。描述here。您的用户代理 here 的示例。您只需将应用请求中的用户代理更改为自定义内容,并在您的 webapp 中使用 javascript 检查该用户代理。这部分有大量示例代码:example
  • 我了解什么是用户代理。除非只有当 iPhone 在不是 Safari.app 的 webView 中查看页面时才会显示特定的用户代理,否则这无济于事。存在吗?
  • 您可以将其更改为您想要的任何字符串,并且没有浏览器(包括 safari)将拥有该用户代理(除非有人碰巧选择了与您相同的随机字符串并用它访问您的页面一段时间原因),所以你可以检查它。
  • 我是否只需将该页面中的代码复制并粘贴到我的viewDidLoad 方法中?我应该用什么代替 autorelease,因为 ARC 不支持此功能?
猜你喜欢
  • 2012-04-22
  • 2015-01-30
  • 2012-01-08
  • 1970-01-01
  • 2017-11-07
  • 1970-01-01
  • 2018-11-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多