簡體   English   中英

UIWebView - 在網頁上啟用右鍵單擊

[英]UIWebView - Enable Right Click on Webpages

我的應用程序中有一個 UIWebView 並且一切正常,但是某些煩人的網頁禁用了用戶右鍵單擊以選擇文本並顯示復制粘貼菜單控制器的能力。 我需要在這些網頁上為用戶重新啟用這些操作。 我懷疑答案與在webViewDidFinishLoading: Javascript 注入頁面有關,但我不確定如何制作此 Javascript。 有沒有人有任何想法?

從我在網頁上檢查的內容來看,我看到它正在禁用 CSS 中的選擇。 如果該信息有幫助,他們將通過外部樣式表文件加載它。

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

其中包含

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

我試過注入以下內容,但它不起作用。

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: to 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];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM