//禁用长按弹出框 [webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.style.webkitTouchCallout='none';"]; ### 常用JS交互知识点解析 #### 一、禁用长按弹出框 在移动设备上,长按操作可能会触发系统默认的行为,比如显示一个包含“复制”、“分享”等选项的上下文菜单。这在某些场景下可能不是我们所期望的,特别是当我们希望用户专注于某个应用内体验时。为了防止这种默认行为发生,可以使用JavaScript来禁用长按弹出框。 **代码示例**: ```objective-c [webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.style.webkitTouchCallout='none';"]; ``` 这里的关键在于`webkitTouchCallout`属性,它是一个Webkit特定的CSS属性,用于控制元素的长按行为。将它的值设为`none`意味着取消长按操作时的上下文菜单显示。 #### 二、禁用用户选择 同样地,在某些应用场景中,我们可能不希望用户能够选择网页上的内容。例如,一个游戏或者需要高度交互性的应用界面,可能不希望用户能够轻易地复制或截取其中的信息。这时可以使用以下JavaScript代码来实现: **代码示例**: ```objective-c [self.webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.style.webkitUserSelect='none';"]; ``` 这里的`webkitUserSelect`属性也是Webkit特有的CSS属性,用于控制元素的可选性。将其设置为`none`可以阻止用户对页面元素的选择。 #### 三、获取UIWebView的URL地址与标题 在iOS应用开发中,经常会遇到需要从UIWebView中获取当前加载页面的URL地址和标题的需求。可以通过调用`stringByEvaluatingJavaScriptFromString:`方法并执行相应的JavaScript脚本来实现。 **获取URL地址**: ```objective-c NSString *currentURL = [webView stringByEvaluatingJavaScriptFromString:@"document.location.href"]; NSLog(@"currentURL == %@", currentURL); ``` **获取标题**: ```objective-c NSString *theTitle = [webView stringByEvaluatingJavaScriptFromString:@"document.title"]; NSLog(@"theTitle == %@", theTitle); ``` 以上两个函数分别返回当前页面的URL和标题。 #### 四、通过name或id访问页面元素的value值 在很多情况下,我们需要通过JavaScript来读取或修改HTML元素的值。这在处理表单数据时特别有用,例如读取输入框的值或设置某个按钮的状态等。 **通过name访问元素的value值**: ```objective-c NSString *js_email_ByName = [webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByName('email')[0].value='hello'"]; NSLog(@"js_email_ByName == %@", js_email_ByName); ``` **通过id访问元素的value值**: ```objective-c NSString *js_email_ById = [webView stringByEvaluatingJavaScriptFromString:@"document.getElementById('_iphone_email').value='asdfasdf'"]; NSLog(@"js_email_ById == %@", js_email_ById); ``` 需要注意的是,示例中的`getElementByIdx_x_x`应该是`getElementById`,且在设置值时,应该单独执行设置操作而不返回值。 #### 五、提交表单 有时我们需要在不离开原应用的情况下自动提交表单。这可以通过执行简单的JavaScript代码来实现: **提交表单**: ```objective-c NSString *js_forms = [webView stringByEvaluatingJavaScriptFromString:@"document.forms[0].submit()"]; NSLog(@"js_forms == %@", js_forms); ``` 此代码会尝试提交页面中的第一个表单。同样需要注意,`submit()`方法通常不会返回任何值,因此这里记录的日志内容可能为空。 #### 六、获取body与body之间的HTML 在某些场景下,我们可能需要获取整个页面的内容,即位于`<body>`标签内部的所有HTML内容。这可以通过执行以下JavaScript代码来实现: ```objective-c NSString *allHTML = [webView stringByEvaluatingJavaScriptFromString:@"document.body.innerHTML"]; NSLog(@"allHTML == %@", allHTML); ``` 这将返回整个页面的HTML内容,方便后续处理或展示。 ### 总结 通过上述知识点的学习,我们可以了解到如何利用JavaScript与iOS应用中的UIWebView进行交互,包括但不限于禁用长按弹出框、禁用用户选择、获取页面的URL地址与标题、通过name或id访问页面元素的value值、提交表单以及获取整个页面的内容等。这些技巧对于提高用户体验和增强应用功能具有重要意义。
- 粉丝: 1
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助