gpt4 book ai didi

javascript - UIWebView - 在网页上启用右键单击

转载 作者:行者123 更新时间:2023-11-28 22:05:45 26 4
gpt4 key购买 nike

我的应用程序中有一个 UIWebView,并且一切正常,但某些烦人的网页禁用了用户右键单击以选择文本并显示复制粘贴菜单 Controller 的功能。我需要在这些网页上为用户重新启用这些操作。我怀疑答案与将 Javascript 注入(inject)到 webViewDidFinishLoading: 上的页面有关,但我不确定如何制作此 Javascript。有人有什么想法吗?

根据我在网页上检查的内容,我发现它禁用了 CSS 中的选择。如果该信息有帮助,他们将通过外部样式表文件加载它。

<link rel="stylesheet" media="screen" type="text/css" href="/css/styleSheet.css?hash=174">

其中包含

body {
-webkit-user-select: none;
}

我试过注入(inject)以下内容,但没有用。

NSString* css = @"\"body { -webkit-user-select: default; }\"";
NSString* js = [NSString stringWithFormat:
@"var styleNode = document.createElement('style');\n"
"styleNode.type = \"text/css\";\n"
"var styleText = document.createTextNode(%@);\n"
"styleNode.appendChild(styleText);\n"
"document.getElementsByTagName('head')[0].appendChild(styleNode);\n",css];
[self.webView stringByEvaluatingJavaScriptFromString:js];

但是,如果我在我的 UIWebView 上使用桌面 Safari Web Inspector,并将页面的外部 CSS 表更改为 -webkit-user-select:default,它会起作用.我只需要一种能够在我的代码中执行此操作的方法。但是,如果我将此行添加到 html 页面,在加载样式表的位置下方,它就不起作用。

<link rel="stylesheet" media="screen" type="text/css" href="/css/styleSheet.css?hash=174">
<style type="text/css">body { background: #AAA; -webkit-user-select: default; }</style>

这是我在 Safari Web Inspector 中看到的。出于某种原因,我在样式表之后添加的样式仍在溢出。

Safari Inspector

如何将 -webkit-user-select: 更改为默认值?我更喜欢使用 Javascript 的答案,而不是将其添加到 htmlString 并重新加载页面。

已解决:

因此,将参数更改为 auto 即可,如下所示。

NSString* css = @"\"body { -webkit-user-select: auto; }\"";
NSString* js = [NSString stringWithFormat:
@"var styleNode = document.createElement('style');\n"
"styleNode.type = \"text/css\";\n"
"var styleText = document.createTextNode(%@);\n"
"styleNode.appendChild(styleText);\n"
"document.getElementsByTagName('head')[0].appendChild(styleNode);\n",css];
[webView stringByEvaluatingJavaScriptFromString:js];

最佳答案

第一个 "-webkit-user-select: auto | none | text;" webkitUserSelect 只取这个值。然后

Nsstring *OverrideCssRules = @"document.body.style.cssText += '-webkit-user-select: auto !important;'"; OR @"document.body.style.webkitUserSelect='auto !important'";
[self.webView stringByEvaluatingJavaScriptFromString:OverrideCssRules];

关于javascript - UIWebView - 在网页上启用右键单击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24054861/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com