Home Php C# Sql C C++ Javascript Python Java Go Android Git Linux Asp.net Django .net Node.js Ios Xcode Cocoa Iphone Mysql Tomcat Mongodb Bash Objective-c Scala Visual-studio Apache Elasticsearch Jar Eclipse Jquery Ruby-on-rails Ruby Rubygems Android-studio Spring Lua Sqlite Emacs Ubuntu Perl Docker Swift Amazon-web-services Svn Html Ajax Xml Java-ee Maven Intellij-idea Rvm Macos Unix Css Ipad Postgresql Css3 Json Windows-server Vue.js Typescript Oracle Hibernate Internet-explorer Github Tensorflow Laravel Symfony Redis Html5 Google-app-engine Nginx Firefox Sqlalchemy Lucene Erlang Flask Vim Solr Webview Facebook Zend-framework Virtualenv Nosql Ide Twitter Safari Flutter Bundle Phonegap Centos Sphinx Actionscript Tornado Register | Login | Edit Tags | New Questions | 繁体 | 简体


10 questions online user: 6

13
votes
answers
58 views
+10

Flutter:如何修复ITMS-90809:不推荐使用的API使用 - Apple将停止接受使用UIWebView API的应用程序的提交

在提交我的最新版本时,Apple突然返回一条消息,说明存在问题,具体为:

ITMS-90809:不推荐使用的API使用情况 - Apple将停止接受使用的应用提交UIWebView API。有关详细信息,请参见 https://developer.apple.com/documentation/uikit/uiwebview

由于我没有使用webview插件,我对使用 UIWebView API 的地方感到很遗憾。有关如何解决此问题的任何建议吗?

此错误出现在最新的稳定颤振版本1.7.8 + hotfix.4中,并包含以下软件包:

  http: ^ 0.12。0 [?] Android工具链 - 针对Android设备开发(Android SDK版本28.0.3)?Android SDK位于/ Users / per / Library / Android / sdk?Android NDK位置未配置(可选;对原生分析支持很有用)?平台android-28,build-tools 28.0.3?Java二进制文件:/ Applications / AndroidStudio.app/Contents/jre/jdk/Contents/Home/bin/java?JavaScriptOpenJDK Runtime Environment(build 1.8.0_152- release- 1136-b06)?接受所有Android许可。[?] Xcode  - 针对iOS和macOS开发(Xcode 10.3)?Xcode位于/Applications/Xcode.app/Contents/Developer?Xcode 10.3,Build版本10G8?CocoaPods版本1.7.4 [?] iOS工具 - 针对iOS设备开发?ios-deploy 1.9.4 [?] Android Studio(版本3.2)?Android Studio at / Applications / Android Studio.app/Contents?Flutter插件版本31。3.1?Dart插件版本181.5656?Java版OpenJDK运行时环境(版本1.8.0_152-release-1136-b06)[?] VS代码(版本1.31.1)?VS代码/ Applications / Visual Studio Code.app/Contents? Flutter扩展版本2.25.1 [?]连接设备(1个可用)?Nexus 6P?5VT7N15C31001152?android-arm64?Android 8.1.0(API 27)?未发现任何问题! 
    
        
沙发
+90
+50

我认为它是从firebase_auth插件中使用的。尝试将其更新为最新版本,然后记住运行 pod update

我倾向于同意这一点,因为搜索包含UIWebView引用的唯一数据包。我现在已经更新到firebase_auth的最新版本,并且无法再找到任何对UIWebView的引用。 - 本8月29日17:07

颤抖的团队似乎意识到了。github.com/firebase/firebase-ios-sdk/pull/3723 - 本8月29日17:14

更新到firebase_auth 0.14.0 + 5并更新pod后,对UIWebView的引用似乎消失了。希望这意味着提交不会再顺利进行。 - Paul-Erik Raue 8月30日凌晨4点28分

这是唯一对我有用的答案。 - Sheshank S. 8月30日22:13

+40

我使用我们的Cordova应用程序并通过更新依赖项修复它。

您是否有机会使用依赖项或其他依赖项使用依赖项“cordova-plugin-inappbrowser”。< / p>

如果是这样,这应该在3.1.0中修复。请参阅发布说明 https://github.com/apache/ cordova-plugin-inappbrowser / blob / master / RELEASENOTES.md 和PR修复它 https://github.com/apache/cordova-plugin-inappbrowser/pull/271

更新:它还没有修复。请参阅cordova-ios上的问题:<

嗯,即使我从Cordova应用程序中删除所有插件,我也会收到相同的电子邮件。 - Tonald Drump 8月29日10:26

是的,我可以确认我还在接受它们。所以它在科尔多瓦也必须是其他东西。Ionic webview也有这个问题:github.com/ionic-team/cordova-plugin-ionic-webview/issues/428 - Klaasvaak 8月29日12:23

另见github.com/apache/cordova-ios/issues/661 - Klaasvaak 8月29日12:26

谢谢(你的)信息。我没有使用Cordova,所以这不是原因,但firebase软件包似乎导致了这一点。 - Paul-Erik Raue 8月30日凌晨4点23分

0
votes
answers
76 views
+10

網站菜單欄不能使用WebView android,而在手機瀏覽器中正常工作

1

我正在使用WebView和使用WebView android打開網站。該網站的菜單欄在移動瀏覽器中工作正常,但是當我在WebView android中打開URL /網站時,菜單欄不起作用。網站菜單欄不能使用WebView android,而在手機瀏覽器中正常工作

當打開Android中的WebView(菜單欄不響應)

When URL open in android webview

當手機瀏覽器

When opening in mobile browser in

下面打開的是代碼我正在用WebView打開URL:

WebView mWebView = (WebView) findViewById(R.id.webview); 
WebSettings mWebSettings = mWebView.getSettings(); 
mWebSettings.setJavaScriptEnabled(true); 
mWebSettings.setSupportZoom(false); 

mWebView.setWebViewClient(new WebViewClient()); 
mWebView.setWebViewClient(new WebViewClient() { 
public boolean shouldOverrideUrlLoading(WebView view, String url) { 
    view.loadUrl(url); 
    return true; 
} 

public void onPageFinished(WebView view, String url) { 

} 

public void onReceivedError(WebView view, int errorCode, String descripti0on, String failingUrl) { 

} 
}); 

mWebView.loadUrl("https://www.buyvipgift.com"); 

請讓我知道我要去哪裏錯了!非常感謝...

沙发
0
1

我在我的代碼中添加了mWebSettings.setDomStorageEnabled(true)這行,現在工作正常。

setDomStorageEnabled(boolean flag) 

設置是否啓用DOM存儲API。

因爲登錄頁面提供的控件可用於自定義colour,fontdecorative image。當您選擇不同的選項時,該頁面即時更新;此外,您的選擇存儲在localStorage中,這樣,當您離開頁面時,稍後再加載它,您的選擇就會被記住。此外,如果您在另一個選項卡中加載此頁面,然後在着陸頁中更改您的選擇,則會在啓動StorageEvent時看到更新的存儲信息輸出。

0
votes
answers
81 views
+10

屏幕縱橫比和QGraphicsWebView或QWebView

0

有什麼方法可以用QGraphicsWebView或QWebView來改變縱橫比嗎? 問題是LCD屏幕(800x480)具有非方形像素,因此網頁顯示不正確,例如,圈子變成橢圓形。 該軟件在Linux中與Xorg一起使用,但是,圖形驅動程序沒有設置寬高比的選項,這是一個非常簡單的幀緩衝區。屏幕縱橫比和QGraphicsWebView或QWebView

感謝您的想法!

+0

得到了Qt的論壇的人很好的建議: https://開頭論壇.qt.io /主題/ 85209 /屏幕縱橫比和 - qwebview –

沙发
0
0

我通過複製康斯坦丁託卡列夫在forum.qt.io提供了答案:

There are at least two ways to do this: 
In user style sheet set transform: scaleX(...) (or scaleY) for html element. Use prefixed version -webkit-tranform if you don't use QtWebKit 5.212 
Use QGraphicsView::scale with different values for x and y (if using QGraphicsWebView) 

Note that performance may decrease because of scaling 

原: https://forum.qt.io/topic/85209/screen-aspect-ratio-and-qwebview

0
votes
answers
78 views
+10

如何在Android WebView中定位類名?

0

我需要加載WebView,並需要修改基於div類的CSS,在我的情況下我需要將目標設置爲innerClass。例如,我有這樣的代碼中的WebView:如何在Android WebView中定位類名?

<div class="myClass"> 
    <div class="innerClass"> 
    Some Text here. 
    </div> 
</div> 

如何設置innerClassdisplay:none

這裏是我的代碼在MainActivity.java

final WebView myWebView = (WebView) findViewById(R.id.webview); 
WebSettings webSettings = myWebView.getSettings(); 
webSettings.setJavaScriptEnabled(true); 
myWebView.loadUrl("https://xxxx.com"); 
+0

爲什麼downvote?是否清楚我的問題? – Nere

沙发
0
1

您可以使用像這樣的javascript代碼:

mWebView.setWebChromeClient(new WebChromeClient()); // for alert 
mWebView.loadUrl("javascript:alert('hello world')"); 

,您可以通過此實現自己的目標:

mWebView.loadUrl("javascript:document.getElementsByClassName('innerClass')[0].style.display = 'none'"); 


這裏是完整的例子:

MainActivity.java

public class MainActivity extends Activity { 

    private WebView mWebView; 
    private boolean isVisible = true; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     mWebView = (WebView) findViewById(R.id.activity_main_webview); 
     mWebView.setWebViewClient(new WebViewClient()); 
     mWebView.setWebChromeClient(new WebChromeClient()); // for alert, anyway. 

     // Enable Javascript 
     WebSettings webSettings = mWebView.getSettings(); 
     webSettings.setJavaScriptEnabled(true); 

     String htmlString = "<html><div class="myClass">
" + 
       "myClass text here" + 
       " <div class="innerClass">
" + 
       "  Some Text here.
" + 
       " </div>
" + 
       "</div>" + 
       "</html>"; 

     mWebView.loadData(htmlString, "text/html; charset=utf-8", null); 

     mWebView.loadUrl("javascript:alert('hello world')"); 
    } 

    public void toggle(View view) { 
     if (isVisible) { 
      mWebView.loadUrl("javascript:var d = document.getElementsByClassName('innerClass')[0]; d.setAttribute("style","display:none;");"); 
     } else { 
      mWebView.loadUrl("javascript:var d = document.getElementsByClassName('innerClass')[0]; d.setAttribute("style","display:visible;");"); 
     } 
     isVisible = !isVisible; 
    } 
} 

activity_main.xml中

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:onClick="runJavascript" 
     android:text="Click"/> 

    <WebView 
     android:id="@+id/activity_main_webview" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"/> 

</LinearLayout> 
+0

謝謝..但不工作... huhu – Nere

+0

警報也不工作.. – Nere

+0

我很抱歉讓你困惑。我編輯了代碼,並測試了此代碼。 –

0
votes
answers
92 views
+10

使用iOS在WKWebView中自動播放YouTube視頻11

1

我想在我的應用中使用小型YouTube播放器。我發現推薦的唯一方法是將帶有YouTube播放器的網頁嵌入到我的應用程序中。所以我用WKWebView並加載嵌入YouTube播放器頁面自動播放參數:https://www.youtube.com/embed/VUbsFtLkGN8?autoplay=1使用iOS在WKWebView中自動播放YouTube視頻11

代碼將是這樣的:在桌面Safari瀏覽器

let webConfiguration = WKWebViewConfiguration() 
let webView = WKWebView(frame: .zero, configuration: webConfiguration) 
let youtubeURL = URL(string: "https://www.youtube.com/embed/VUbsFtLkGN8?autoplay=1") 
webView.load(URLRequest(url: youtubeURL!)) 

這個嵌入播放器自動播放的網址,但在移動Safari或WKWebView不會自動播放。我可以強制WKWebView以某種方式自動播放視頻嗎?或者使用其他YouTube播放器網址?

+0

並不在視頻的蘋果阻止自動播放? –

+0

是的,在Safari中,但我認爲你應該可以在你的應用中自動播放。 – Ondra

沙发
0
0
var youTubeVideoHTML: String = "<!DOCTYPE html><html><head><style>body{margin:0px 0px 0px 0px;}</style></head> <body> <div id="player"></div> <script> var tag = document.createElement('script'); tag.src = "http://www.youtube.com/player_api"; var firstScriptTag = document.getElementsByTagName('script')[0]; firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); var player; function onYouTubePlayerAPIReady() { player = new YT.Player('player', { width:'%0.0f', height:'%0.0f', videoId:'%@', events: { 'onReady': onPlayerReady, } }); } function onPlayerReady(event) { event.target.playVideo(); } </script> </body> </html>" 

func playVideoWithId(videoId: String) { 
    var html: String = String(format: youTubeVideoHTML, self.frame.size.width, self.frame.size.height, videoId) 


} 

或替代的,你可以使用

YTPlayer For Playing Youtube Video

+0

它不是完整的代碼,也不會自動播放。 – Ondra

+0

YTPlayer庫似乎不再被維護。 – Ondra

0
votes
answers
71 views
+10

在「CSS更新」中清除Webview中的緩存?

0

我的用戶在webview中使用android應用程序。現在每當我在CSS中進行更改時,都不會反映到用戶的設備上,因爲早期的CSS存儲在應用程序的緩存中。有什麼辦法可以繞過這個並反映新鮮的CSS?有沒有什麼辦法可以控制服務器的CSS更新?類似於在.HTACCESS文件中設置命令或以編程方式。在「CSS更新」中清除Webview中的緩存?

在此先感謝...

+0

我認爲唯一的解決方案是重新加載整個webview內容 – hakim

+0

是否有可能通過命令從服務器端重新加載整個webview內容,因爲在這種情況下,應用程序掌握在實際用戶手中。 – Observer

+0

我認爲這是可以使用推送消息(即FCM),應用程序收到推送消息後,您的應用程序應該重新加載webview內容 – hakim

沙发
0
0

最後我想出了非常簡單和有效的解決方案。

所有你需要做的只是重命名CSS文件

0
votes
answers
85 views
+10

應該使用什麼樣的視圖來獲取WebView的標題和Url,如下圖所示?

0

WebView with Title and Url and action menu that opens the page into Chrome應該使用什麼樣的視圖來獲取WebView的標題和Url,如下圖所示?

所以你可以看到有一個標題「Casi di femminicidio ...」和一個Url正下方。在右邊有一個菜單,其中包含一個按鈕,可直接將URL打開到Chrome選項卡中。我認爲向用戶展示實際的url和協議是很好的。它是一個默認的視圖類型?

+0

這是一款經典的工具欄,請查看https://developer.android.com/reference/android/support/v7/widget/Toolbar.html –

沙发
0
0

此行添加到您的依賴關係:

implementation 'com.android.support:customtabs:26.1.0' 

,然後使用:

new CustomTabsIntent 
      .Builder() 
      .build() 
      .launchUrl(this, Uri.parse("http://google.com")); 

,如果你想改變欄中可以使用的顏色:

  .setToolbarColor() 

更多在這裏:https://developer.chrome.com/multidevice/android/customtabs

祝你好運!

+0

非常感謝! – Nullo

0
votes
answers
80 views
+10

在MainActivity中從webview調用javascript Xamarin

0

我試圖在主要活動中從webview調用javascript函數。這可以在我的自定義Render中調用,只需調用this.Element.Eval(「alert('')」)。在MainActivity中從webview調用javascript Xamarin

我無法調用FindViewById,因爲webview在Resouces.Id中不可用。

謝謝!

+0

你的WebView類型是什麼? 'Xamarin.Forms.WebView'或'Android.Webkit.WebView'? –

+0

你好,它是一個Xamarin.Forms.WebView –

沙发
0
0

Xamarin.forms.WebView提供Eval()方法從C#調用JavaScript,這裏是官方文檔:Call JavaScript from C#

我無法調用FindViewById,因爲webview在Resouces.Id中不可用。

使用x:Name命名在XAML你的控制,這樣的:

<WebView x:Name="webView" ... />

然後,你可以通過名字在後面的C#代碼中使用它,就像這樣:

webView.Eval (string.Format ("printMultiplicationTable({0}, {1})", number, end));

0
votes
answers
67 views
+10

如何識別用戶是輸入了搜索文本還是網站?

0

因此,我正在構建一個浮動應用程序,允許用戶瀏覽網頁並允許他們從YouTube等視頻網站收聽音頻,即使設備被鎖定/在後臺也是如此。 如何識別用戶是輸入了搜索文本還是網站?

在這裏我有一個文本框,用戶可以輸入該網站,或者他們要搜索的任何文本即SomeSite.com,www.SomeSite.com,一些文字被搜索

我想知道有沒有任何有效的方法來做到這一點。目前我想通過計算文本中的空間來區分這種情況(如果有一個或多個空格,那麼文本絕對不是URL)。但是這不適用於1個字的搜索查詢。另一種方法是檢查.com,.in,.uk等頂級域名,因爲可能會有成千上萬的域名,並且在未來也會增加。 我只想要一個有效區分網站或網址

沙发
0
0

可以使用Patterns類可從API級別8

if (Patterns.WEB_URL.matcher(myUrl).matches()) { 
    // Go to website 
} else { 
    // Submit as search query 
} 
板凳
0
0

您可以使用

0
votes
answers
89 views
+10

webView.canGoBack()不能工作

1

最近我所有的WebView基於應用程序開始有後退按鈕的問題。它看起來與更新一些Android組件的問題,請幫助解決這個問題或一些替代解決方案?webView.canGoBack()不能工作

webView.canGoBack()總是返回false

PS:所有應用程序在前幾天都正常工作。

我使用的是這樣的:

@Override 
    public void onBackPressed() { 
     if (webView.canGoBack()) { 
      webView.goBack(); 
     } else { 
      super.onBackPressed(); 
     } 
    } 
+2

我也注意到這一點。查看[Chromium BUG 794020](https://bugs.chromium.org/p/chromium/issues/detail?id=794020)以及[stackoverflow question 47771494](https://stackoverflow.com/questions/47771494) 。 – hQuse

+0

確切地說,希望他們能夠在更新中儘快修復它。 –

沙发
0
1

通過這樣的創建自己的canGoBack ....

Initally you need add the home page.. 
ArrayList<String> urls = new ArrayList<>(); 
urls.add(www.google.com); 

//after that you need override this method 
webView.setWebViewClient(new WebViewClient() { 
     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      view.loadUrl(url); 
      Log.d(TAG, "shouldOverrideUrlLoading: "+url); 
      urls.add(url); 
      return true; 
     } 
     @Override 
     public void onPageStarted(WebView view, String url, Bitmap favicon) 
     { 
      super.onPageStarted(view, url, favicon); 
      pDialog.show(); 
     } 
     @Override 
     public void onPageFinished(WebView view, final String url) { 
      pDialog.dismiss(); 
     } 
    }); 

//for onBackPressed, same like in custom button for back click option 
@Override 
public void onBackPressed() { 
    if(!canGoBack() 
    { 
     super.onBackPressed(); 
    } 
} 

//Custome Method 
public boolean canGoBack() 
{ 
    if(urls.size() == 1) // home page 
    { 
     return false; 
    } 
    else 
    { 
     webView.loadUrl(urls.get(urls.size()-2)); // load previous url 
     urls.remove(urls.size()-1); // remove last loaded url 
     return true; 
    } 
}