base-url 相关问题

ios maui.net 自定义webview默认BaseUrl路径

我有这个自定义网络视图,如下所示: 主页.xaml ```` 我有这个自定义网络视图,如下所示: 主页.xaml ``` <controls:HybridWebView x:Name="MyWebView" HeightRequest="140" HorizontalOptions="Fill" Source="{Binding Source}" VerticalOptions="FillAndExpand" WidthRequest="512" /> 自定义 webview 代码是: HybridWebView.cs public class SourceChangedEventArgs : EventArgs { public WebViewSource Source { get; private set; } public SourceChangedEventArgs(WebViewSource source) { Source = source; } } public class JavaScriptActionEventArgs : EventArgs { public string Payload { get; private set; } public JavaScriptActionEventArgs(string payload) { Payload = payload; } } public interface IHybridWebView : IView { event EventHandler<SourceChangedEventArgs> SourceChanged; event EventHandler<JavaScriptActionEventArgs> JavaScriptAction; event EventHandler<EvaluateJavaScriptAsyncRequest> RequestEvaluateJavaScript; void Refresh(); Task EvaluateJavaScriptAsync(EvaluateJavaScriptAsyncRequest request); WebViewSource Source { get; set; } void Cleanup(); void InvokeAction(string data); } public class HybridWebView : View, IHybridWebView { public event EventHandler<SourceChangedEventArgs> SourceChanged; public event EventHandler<JavaScriptActionEventArgs> JavaScriptAction; public event EventHandler<EvaluateJavaScriptAsyncRequest> RequestEvaluateJavaScript; public HybridWebView() { } public async Task EvaluateJavaScriptAsync(EvaluateJavaScriptAsyncRequest request) { await Task.Run(() => { RequestEvaluateJavaScript?.Invoke(this, request); }); } public void Refresh() { if (Source == null) return; var s = Source; Source = null; Source = s; } public WebViewSource Source { get { return (WebViewSource)GetValue(SourceProperty); } set { SetValue(SourceProperty, value); } } public static readonly BindableProperty SourceProperty = BindableProperty.Create( propertyName: "Source", returnType: typeof(WebViewSource), declaringType: typeof(HybridWebView), defaultValue: new UrlWebViewSource() { Url = "about:blank" }, propertyChanged: OnSourceChanged); private static void OnSourceChanged(BindableObject bindable, object oldValue, object newValue) { var view = bindable as HybridWebView; bindable.Dispatcher.Dispatch(() => { view.SourceChanged?.Invoke(view, new SourceChangedEventArgs(newValue as WebViewSource)); }); } public void Cleanup() { JavaScriptAction = null; } public void InvokeAction(string data) { JavaScriptAction?.Invoke(this, new JavaScriptActionEventArgs(data)); } } 和ios using CoreGraphics; using Foundation; using Microsoft.Maui.Handlers; using Microsoft.Maui.Platform; using WebKit; using WebViewHostExample.Controls; namespace WebViewHostExample.Platforms.iOS.Renderers { public class HybridWebViewHandler : ViewHandler<IHybridWebView, WKWebView> { public static PropertyMapper<IHybridWebView, HybridWebViewHandler> HybridWebViewMapper = new PropertyMapper<IHybridWebView, HybridWebViewHandler>(ViewHandler.ViewMapper); const string JavaScriptFunction = "function invokeCSharpAction(data){window.webkit.messageHandlers.invokeAction.postMessage(data);}"; private WKUserContentController userController; private JSBridge jsBridgeHandler; static SynchronizationContext sync; public HybridWebViewHandler() : base(HybridWebViewMapper) { sync = SynchronizationContext.Current; } private void VirtualView_SourceChanged(object sender, SourceChangedEventArgs e) { LoadSource(e.Source, PlatformView); } protected override WKWebView CreatePlatformView() { sync = sync ?? SynchronizationContext.Current; jsBridgeHandler = new JSBridge(this); userController = new WKUserContentController(); var script = new WKUserScript(new NSString(JavaScriptFunction), WKUserScriptInjectionTime.AtDocumentEnd, false); userController.AddUserScript(script); userController.AddScriptMessageHandler(jsBridgeHandler, "invokeAction"); var config = new WKWebViewConfiguration { UserContentController = userController }; var webView = new WKWebView(CGRect.Empty, config); return webView; } protected override void ConnectHandler(WKWebView platformView) { base.ConnectHandler(platformView); if (VirtualView.Source != null) { LoadSource(VirtualView.Source, PlatformView); } VirtualView.SourceChanged += VirtualView_SourceChanged; VirtualView.RequestEvaluateJavaScript += VirtualView_RequestEvaluateJavaScript; } private void VirtualView_RequestEvaluateJavaScript(object sender, EvaluateJavaScriptAsyncRequest e) { sync.Post((o) => { PlatformView.EvaluateJavaScript(e); }, null); } protected override void DisconnectHandler(WKWebView platformView) { base.DisconnectHandler(platformView); VirtualView.SourceChanged -= VirtualView_SourceChanged; userController.RemoveAllUserScripts(); userController.RemoveScriptMessageHandler("invokeAction"); jsBridgeHandler?.Dispose(); jsBridgeHandler = null; } private static void LoadSource(WebViewSource source, WKWebView control) { if (source is HtmlWebViewSource html) { control.LoadHtmlString(html.Html, new NSUrl(html.BaseUrl ?? "http://localhost", true)); } else if (source is UrlWebViewSource url) { control.LoadRequest(new NSUrlRequest(new NSUrl(url.Url))); } } } public class JSBridge : NSObject, IWKScriptMessageHandler { readonly WeakReference<HybridWebViewHandler> hybridWebViewRenderer; internal JSBridge(HybridWebViewHandler hybridRenderer) { hybridWebViewRenderer = new WeakReference<HybridWebViewHandler>(hybridRenderer); } public void DidReceiveScriptMessage(WKUserContentController userContentController, WKScriptMessage message) { HybridWebViewHandler hybridRenderer; if (hybridWebViewRenderer.TryGetTarget(out hybridRenderer)) { hybridRenderer.VirtualView?.InvokeAction(message.Body.ToString()); } } }} 如果我使用这样的代码: MainPageViewModel vm; public MainPage() { InitializeComponent(); vm = new MainPageViewModel(); MyWebView.BindingContext = vm; MyWebView.JavaScriptAction += MyWebView_JavaScriptAction; } protected override void OnParentSet() { base.OnParentSet(); vm.Source = new HtmlWebViewSource() { , Html = htmlSource BaseUrl = "ios path i want????" }; } 如果我在 android 中执行此操作:并添加路径:“file:///android_asset/”,它将在 android web 视图上工作 protected override void OnParentSet() { base.OnParentSet(); vm.Source = new HtmlWebViewSource() { , Html = htmlSource BaseUrl = "file:///android_asset/" }; } 它会起作用,但我想在 ios 中得到同样的东西??? maui.net ios 代码中“Resources/Raw/”的默认路径是什么 如果我在 android 中执行此操作:并添加路径:“file:///android_asset/” 它将在 Android 网络视图上运行。 它会起作用,但我想在 ios 中得到同样的东西??? 试试这个代码: #elif __IOS__ BaseUrl = Foundation.NSBundle.MainBundle.ResourcePath; #else 更多详情可以参考这个问题:Ios本地设备组件css无法加载#5245。

回答 1 投票 0

playwright.config.ts 中的 Playwright baseUrl 在测试中不起作用

我在为项目设置 baseURL 时遇到问题。根据我观看并尝试复制的所有教程,在 playwright.config.ts 中设置 baseURL 应该可以解决问题。然而,当我...

回答 1 投票 0

剧作家仅针对特定的一组规格更改baseUrl

嗨,我有我的剧作家运行的 5 个规范。所有这些都使用在我的 playwright.config.js 中设置的 baseUrl,但我希望这 5 个测试中的 2 个在不同的 baseUrl 上运行。那是……

回答 1 投票 0

如何获取NextJs项目中的页面URL或主机名?

我想在静态站点生成器上获取页面的完整 URL 或站点主机名,如下图所示。 我将尝试使用 window.location.hostname,但它不起作用。 错误:窗口未定义。

回答 17 投票 0

如何在css文件中使用Jekyll baseurl

我正在使用 Jekyll 在 Github 页面上托管一个网站。问题在于引用 css 文件中的文件路径。 我想做这样的事情: 正文 { {背景:#FFF url('{{ site.baseurl}}/...

回答 3 投票 0

如何定义asp.net core应用程序的基本url

我有一个 ASP.NET Core 3.1.0 Web 应用程序,我正在努力理解 asp.net core 公开的 url。 我有一个控制器 [路线(“账户”)] 公共类 AccountsController :

回答 1 投票 0

如何在应用程序级别设置react-router的基本url?

我有一个使用 create-react-app 创建的应用程序,我想将其安装在我网站上的子目录中。推荐的方法是添加 process.env.PUBLIC_URL 作为 baseurl。 IE: 我有一个使用 create-react-app 创建的应用程序,我想将其安装在我网站上的子目录中。推荐的方法是添加 process.env.PUBLIC_URL 作为 baseurl。即: <Route exact path={`${process.env.PUBLIC_URL}/signin`} component={SigninPage}/> 现在有没有一种方法可以在应用程序级别设置它,这样我就不必在每个路由或链接或导航链接上重复这段代码? 谢谢! 您可以将其设置为basename上的Router,以下是React路由器文档的链接:basename中的BrowserRouter和basename中的HashRouter。它看起来像这样: <Router basename={process.env.PUBLIC_URL}> </Router> 使用 React Router v6,建议对 Web 项目使用 createBrowserRouter。 将选项对象作为第二个参数传递给 createBrowserRouter 以配置 basename。 import * as ReactDOM from 'react-dom'; import { RouterProvider, createBrowserRouter } from 'react-router-dom'; const router = createBrowserRouter([ /* routes... */ ], { basename: process.env.PUBLIC_URL }); ReactDOM.createRoot(document.getElementById('root')).render( <RouterProvider router={router} /> );

回答 2 投票 0

javascript 将主机名 URL 转换为完整 URL

我想将域名 url(例如:discord.com、google.com)转换为完整的 URL(例如:https://discord.com/、https://www.google.com)。 问题是我无法提前知道它是否会......

回答 1 投票 0

magento产品描述中的皮肤网址,基本网址

如何在 magento 管理面板中获取 paroduct 描述的基本 url、皮肤 url? 我可以用这个吗: {{商店 url=""}} {{皮肤 url=''}} 获取网址 编辑

回答 2 投票 0


laravel URL :: to('/')返回localhost作为部署服务器中的基本URL

我将我的应用程序部署在http://www.nepathya.com中。但是,当将URL链接作为电子邮件的一部分生成时,基本URL是localhost。公共功能句柄(用户$ user){foreach($ this-> ...

回答 2 投票 0

Flutter:如何从社会获取基本网址?

为了进行身份验证,我想从下拉列表中恢复所选公司的base_url,但是我做不到,作为初学者,欢迎您提供一些帮助。这是...

回答 1 投票 0

如何防止Axios在baseURL之后添加斜线

在我的Vue应用程序中,我将axios配置带到单独的文件config.js中。 config.js的内容从“ axios”导入axios; const token = localStorage.getItem('user-token'); const baseUrl =`/ api / v2 ....

回答 1 投票 0

CodeIgniter:如何将current_url与视图url进行匹配(以构建导航)

为了将活动类应用于导航菜单中的当前项目。我需要检查其链接是否等于我正在尝试的URL:

回答 3 投票 0

如何从index.html在Angular 8应用程序中动态定义“ base href”?

如何从index.html在Angular 8应用程序中动态定义“ base href”?之前我使用--base-href,但现在不支持。

回答 1 投票 0

如何可靠地将base_url从Codeigniter传递给JavaScript?

我正在使用Codeigniter 3.1.8和Bootstrap 4开发基本的博客应用程序。帖子中有评论。当然,有删除评论功能。它通过(jQuery)AJAX运行:$('....

回答 2 投票 0

在php中设置base_url()。在任何php框架中,base_url()应该是什么?

我的问题不集中在如何在任何php框架中设置基本url的方法。我实际上想知道的是base_url()应该是什么?1以下两个选项之一http://example.com 2 ...

回答 2 投票 3

代码点火器站点的基本URL不起作用

CodeIgniter的新手,弄湿了我的脚。较旧(5岁?)的CI网站。将其移至A2的新虚拟主机并进行设置。出现主页,但是基本URL似乎不起作用...

回答 2 投票 0

从Environment.SpecialFolder.LocalApplicationData加载的文件设置BASEURL

这也许应该是简单,但它已经让我头疼。基本上我创建下载包含HTML,CSS一个zip文件的应用程序,JavaScript的等它解压缩内容,并...

回答 1 投票 0

Symfony2配置app base url

我怎样才能得到这个基本网址http://localhost/Symfony/web/app_dev.php/或http://localhost/Symfony/web/app.php/或http:// localhost / Symfony / web /(base url) )在symfony2配置文件中?找不到......

回答 2 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.