{"id":64,"date":"2021-04-30T14:43:55","date_gmt":"2021-04-30T06:43:55","guid":{"rendered":"https:\/\/jinhaihan.top\/WordPress\/?p=64"},"modified":"2021-10-07T17:41:26","modified_gmt":"2021-10-07T09:41:26","slug":"64","status":"publish","type":"post","link":"https:\/\/www.jinhaihan.top\/WordPress\/64\/","title":{"rendered":"\u865a\u5e7b4\u81ea\u5b9a\u4e49webbrowser\uff0c\u89e3\u9664\u5e27\u7387\u9501\u5b9a"},"content":{"rendered":"<h1>\u6e90\u7801\u5206\u6790<\/h1>\n<p>Webrowser\u662f\u865a\u5e7b\u5b98\u65b9\u7684webUi\u63d2\u4ef6\uff0c\u4f46\u63d2\u4ef6\u672c\u8eab\u9ed8\u8ba4\u88ab\u9501\u4e8624FPS\uff0c\u5bfc\u81f4\u90e8\u5206\u52a8\u753b\u770b\u8d77\u6765\u5f88\u5361\u6bb5\u4e0d\u8fde\u8d2f<\/p>\n<blockquote>\n<p>\u5176\u4ed6\u4fee\u6539\u6d4f\u89c8\u5668\u53c2\u6570\u7684\u9700\u6c42\u4e5f\u53ef\u53c2\u7167\u6b64\u6587\u7ae0<\/p>\n<\/blockquote>\n<p>\u5728\u865a\u5e7b\u5f15\u64ce\u7684\u5b89\u88c5\u76ee\u5f55\uff1a\\Engine\\Plugins\\Runtime\\WebBrowserWidget\\Source\\WebBrowserWidget\\Private\u4e0b\u53ef\u4ee5\u770b\u5230webbrowser\u7684\u6e90\u7801\uff0c\u4f46\u662f\u4e0b\u8f7d\u7684\u5b89\u88c5\u7248\u662f\u65e0\u6cd5\u4fee\u6539\u6b64\u6e90\u7801\u7684\uff0c\u5373\u4fbf\u4fee\u6539\u4e5f\u65e0\u6cd5\u7f16\u8bd1\uff0c\u6240\u4ee5\u5982\u679c\u8981\u5b9e\u73b0\u81ea\u5b9a\u4e49\u7684\u6d4f\u89c8\u5668\uff0c\u90a3\u5c31\u6709\u4e24\u79cd\u65b9\u6cd5\uff1a<\/p>\n<ol>\n<li>\u4e0b\u8f7d\u865a\u5e7b\u6e90\u7801\u81ea\u7f16\u8bd1<\/li>\n<li>\u4eff\u7167\u5176\u5199\u4e00\u4e2a\u6d4f\u89c8\u5668\u63a7\u4ef6\u5e76\u8c03\u7528<\/li>\n<\/ol>\n<p>\u663e\u7136\u7b2c\u4e00\u70b9\u7684\u4ee3\u4ef7\u5f88\u5927\uff0c\u6240\u4ee5\u63a5\u4e0b\u6765\u91c7\u53d6\u7b2c\u4e8c\u4e2a\u65b9\u6cd5<\/p>\n<p>\u901a\u8fc7\u6e90\u7801\u53ef\u4ee5\u5f97\u77e5\uff0c\u8fd9\u4e2a\u6d4f\u89c8\u5668\u63a7\u4ef6\u5176\u5b9e\u662f\u5bf9\u201cSBrowser\u201d\u7684\u5b9e\u4f8b\u5316\uff0ccpp\u6587\u4ef690\u884c\u5de6\u53f3\u6709\u5982\u4e0b\u4ee3\u7801\uff1a<\/p>\n<pre><code class=\"language-C++\">WebBrowserWidget = SNew(SWebBrowser)\n            .InitialURL(InitialURL)\n            .ShowControls(false)\n            .SupportsTransparency(bSupportsTransparency)\n            .OnUrlChanged(BIND_UOBJECT_DELEGATE(FOnTextChanged, HandleOnUrlChanged))\n            .OnBeforePopup(BIND_UOBJECT_DELEGATE(FOnBeforePopupDelegate, HandleOnBeforePopup));\n\n        return WebBrowserWidget.ToSharedRef();<\/code><\/pre>\n<p>\u67e5\u770bSWebBrowser\u7684\u5b9e\u73b0\uff08\u76f4\u63a5\u8d44\u6e90\u7ba1\u7406\u5668\u641c\u7d22\u8fd9\u4e2a\u6587\u4ef6\u5373\u53ef\uff09\uff0c\u53ef\u770b\u5230\u5176\u6709\u5bf9\u5404\u79cd\u53c2\u6570\u7684\u5b9a\u4e49\uff0c\u5176\u4e2d\u5c31\u6709\u5e27\u7387\u9650\u5236\uff1a<\/p>\n<pre><code class=\"language-C++\">SLATE_BEGIN_ARGS(SWebBrowser)\n        : _InitialURL(TEXT(&quot;https:\/\/www.google.com&quot;))\n        , _ShowControls(true)\n        , _ShowAddressBar(false)\n        , _ShowErrorMessage(true)\n        , _SupportsTransparency(false)\n        , _SupportsThumbMouseButtonNavigation(true)\n        , _ShowInitialThrobber(true)\n        , _BackgroundColor(255,255,255,255)\n        , _BrowserFrameRate(24)\n        , _PopupMenuMethod(TOptional&lt;EPopupMethod&gt;())\n        , _ViewportSize(FVector2D::ZeroVector)\n    { }\n    \/\/\u3002\u3002\u4e0b\u9762\u8fd8\u6709\u5f88\u591a\u53c2\u6570\uff0c\u53ef\u4ee5\u81ea\u884c\u67e5\u770b<\/code><\/pre>\n<p>\u5230\u8fd9\u91cc\u601d\u8def\u5c31\u6bd4\u8f83\u6e05\u6670\u4e86\uff0c\u5982\u679c\u4f7f\u7528\u81ea\u7f16\u8bd1\u6e90\u7801\u7684\u8bdd\uff0c\u76f4\u63a5\u628a24\u6539\u4e86\u5c31\u597d\u4e86\uff0c\u4f46\u662f\u5982\u679c\u4e0d\u662f\u81ea\u7f16\u8bd1\uff0c\u5c31\u9700\u8981\u53e6\u5916\u641e\u4e8b\u60c5\u3002<\/p>\n<h1>\u81ea\u5b9a\u4e49\u6d4f\u89c8\u5668widget<\/h1>\n<p>\u65b0\u5efaC++\u7c7b\uff0c\u540d\u5b57\u968f\u610f\uff0c\u8fd9\u91cc\u4ee5WebBrowser60\u4e3a\u4f8b\uff0c\u610f\u4e3a60FPS\u7684\u6d4f\u89c8\u5668\u3002<\/p>\n<p>CPP\u6587\u4ef6\u548cH\u6587\u4ef6\u76f4\u63a5\u7167\u642cWebBrowser\uff0c\u5982\u679c\u6ca1\u6709\u7279\u6b8a\u9700\u6c42\u7684\u8bdd\u3002<br \/>\n\u5728\u521d\u59cb\u5316SBrowser\u7684\u4f4d\u7f6e\u52a0\u4e0a\u4e00\u53e5\u5bf9\u53c2\u6570\u7684\u8bbe\u5b9a\u5c31\u884c\uff0c\u7406\u8bba\u4e0a\u53c2\u6570\u662f\u90fd\u80fd\u8bbe\u7f6e\u7684<\/p>\n<pre><code class=\"language-C++\">WebBrowserWidget = SNew(SWebBrowser)\n            .InitialURL(InitialURL)\n            .ShowControls(false)\n            .SupportsTransparency(bSupportsTransparency)\n            \/\/\u91cd\u70b9\u5728\u8fd9\u91cc\n            .BrowserFrameRate(60)\n            \/\/\u91cd\u70b9\u5728\u8fd9\u91cc\n            .OnUrlChanged(BIND_UOBJECT_DELEGATE(FOnTextChanged, HandleOnUrlChanged))\n            .OnBeforePopup(BIND_UOBJECT_DELEGATE(FOnBeforePopupDelegate, HandleOnBeforePopup));<\/code><\/pre>\n<p>\u4e0b\u9762\u662f\u6574\u4e2acpp\u548ch\u7684\u6587\u4ef6\u4ee3\u7801\uff0c\u53ef\u4ee5\u76f4\u63a5copy<\/p>\n<p>UWebBrowser60.cpp<\/p>\n<pre><code class=\"language-c++\">\/\/ Copyright Epic Games, Inc. All Rights Reserved.\n\n#include &quot;WebBrowser60.h&quot;\n#include &quot;SWebBrowser.h&quot;\n#include &quot;Widgets\/Layout\/SBox.h&quot;\n#include &quot;Widgets\/Text\/STextBlock.h&quot;\n#include &quot;Async\/TaskGraphInterfaces.h&quot;\n#include &quot;UObject\/ConstructorHelpers.h&quot;\n\n#if WITH_EDITOR\n#include &quot;Materials\/MaterialInterface.h&quot;\n#include &quot;Materials\/MaterialExpressionMaterialFunctionCall.h&quot;\n#include &quot;Materials\/MaterialExpressionTextureSample.h&quot;\n#include &quot;Materials\/MaterialExpressionTextureSampleParameter2D.h&quot;\n#include &quot;Materials\/MaterialFunction.h&quot;\n#include &quot;Factories\/MaterialFactoryNew.h&quot;\n#include &quot;AssetRegistryModule.h&quot;\n#include &quot;PackageHelperFunctions.h&quot;\n#endif\n\n#define LOCTEXT_NAMESPACE &quot;WebBrowser&quot;\n\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/ UWebBrowser60\n\nUWebBrowser60::UWebBrowser60(const FObjectInitializer&amp; ObjectInitializer)\n    : Super(ObjectInitializer)\n{\n    bIsVariable = true;\n}\n\nvoid UWebBrowser60::LoadURL(FString NewURL)\n{\n    if (WebBrowserWidget.IsValid())\n    {\n        return WebBrowserWidget-&gt;LoadURL(NewURL);\n    }\n}\n\nvoid UWebBrowser60::LoadString(FString Contents, FString DummyURL)\n{\n    if (WebBrowserWidget.IsValid())\n    {\n        return WebBrowserWidget-&gt;LoadString(Contents, DummyURL);\n    }\n}\n\nvoid UWebBrowser60::ExecuteJavascript(const FString&amp; ScriptText)\n{\n    if (WebBrowserWidget.IsValid())\n    {\n        return WebBrowserWidget-&gt;ExecuteJavascript(ScriptText);\n    }\n}\n\nFText UWebBrowser60::GetTitleText() const\n{\n    if (WebBrowserWidget.IsValid())\n    {\n        return WebBrowserWidget-&gt;GetTitleText();\n    }\n\n    return FText::GetEmpty();\n}\n\nFString UWebBrowser60::GetUrl() const\n{\n    if (WebBrowserWidget.IsValid())\n    {\n        return WebBrowserWidget-&gt;GetUrl();\n    }\n\n    return FString();\n}\n\nvoid UWebBrowser60::ReleaseSlateResources(bool bReleaseChildren)\n{\n    Super::ReleaseSlateResources(bReleaseChildren);\n\n    WebBrowserWidget.Reset();\n}\n\nTSharedRef&lt;SWidget&gt; UWebBrowser60::RebuildWidget()\n{\n    if (IsDesignTime())\n    {\n        return SNew(SBox)\n            .HAlign(HAlign_Center)\n            .VAlign(VAlign_Center)\n            [\n                SNew(STextBlock)\n                .Text(LOCTEXT(&quot;Web Browser&quot;, &quot;Web Browser&quot;))\n            ];\n    }\n    else\n    {\n        WebBrowserWidget = SNew(SWebBrowser)\n            .InitialURL(InitialURL)\n            .ShowControls(false)\n            .SupportsTransparency(bSupportsTransparency)\n            .BrowserFrameRate(60)\n            .OnUrlChanged(BIND_UOBJECT_DELEGATE(FOnTextChanged, HandleOnUrlChanged))\n            .OnBeforePopup(BIND_UOBJECT_DELEGATE(FOnBeforePopupDelegate, HandleOnBeforePopup));\n\n        return WebBrowserWidget.ToSharedRef();\n    }\n}\n\nvoid UWebBrowser60::SynchronizeProperties()\n{\n    Super::SynchronizeProperties();\n\n    if (WebBrowserWidget.IsValid())\n    {\n\n    }\n}\n\nvoid UWebBrowser60::HandleOnUrlChanged(const FText&amp; InText)\n{\n    OnUrlChanged.Broadcast(InText);\n}\n\nbool UWebBrowser60::HandleOnBeforePopup(FString URL, FString Frame)\n{\n    if (OnBeforePopup.IsBound())\n    {\n        if (IsInGameThread())\n        {\n            OnBeforePopup.Broadcast(URL, Frame);\n        }\n        else\n        {\n            \/\/ Retry on the GameThread.\n            TWeakObjectPtr&lt;UWebBrowser60&gt; WeakThis = this;\n            FFunctionGraphTask::CreateAndDispatchWhenReady([WeakThis, URL, Frame]()\n                {\n                    if (WeakThis.IsValid())\n                    {\n                        WeakThis-&gt;HandleOnBeforePopup(URL, Frame);\n                    }\n                }, TStatId(), nullptr, ENamedThreads::GameThread);\n        }\n\n        return true;\n    }\n\n    return false;\n}\n\n#if WITH_EDITOR\n\nconst FText UWebBrowser60::GetPaletteCategory()\n{\n    return LOCTEXT(&quot;Experimental&quot;, &quot;Experimental&quot;);\n}\n\n#endif\n\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\n#undef LOCTEXT_NAMESPACE\n<\/code><\/pre>\n<p>UWebBrowser60.h<\/p>\n<pre><code class=\"language-c++\">\/\/ Fill out your copyright notice in the Description page of Project Settings.\n\n#pragma once\n\/*MyWebBrowser.h*\/\n\n\/\/ Fill out your copyright notice in the Description page of Project Settings.\n\n#pragma once\n\n#include &quot;Components\/Widget.h&quot;\n#include &quot;WebBrowser60.generated.h&quot;\n\n\/**\n * \n *\/\nUCLASS()\nclass DIGITALTWINPLATFORM_API UWebBrowser60 : public UWidget\n{\n    GENERATED_UCLASS_BODY()\n\npublic:\n    DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnUrlChanged, const FText&amp;, Text);\n    DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOnBeforePopup, FString, URL, FString, Frame);\n\n    \/**\n     * Load the specified URL\n     *\n     * @param NewURL New URL to load\n     *\/\n    UFUNCTION(BlueprintCallable, Category = &quot;Web Browser&quot;)\n    void LoadURL(FString NewURL);\n\n    \/**\n     * Load a string as data to create a web page\n     *\n     * @param Contents String to load\n     * @param DummyURL Dummy URL for the page\n     *\/\n    UFUNCTION(BlueprintCallable, Category=&quot;Web Browser&quot;)\n    void LoadString(FString Contents, FString DummyURL);\n\n    \/**\n    * Executes a JavaScript string in the context of the web page\n    *\n    * @param ScriptText JavaScript string to execute\n    *\/\n    UFUNCTION(BlueprintCallable, Category = &quot;Web Browser&quot;)\n    void ExecuteJavascript(const FString&amp; ScriptText);\n\n    \/**\n     * Get the current title of the web page\n     *\/\n    UFUNCTION(BlueprintCallable, Category=&quot;Web Browser&quot;)\n    FText GetTitleText() const;\n\n    \/**\n    * Gets the currently loaded URL.\n    *\n    * @return The URL, or empty string if no document is loaded.\n    *\/\n    UFUNCTION(BlueprintCallable, Category = &quot;Web Browser&quot;)\n    FString GetUrl() const;\n\n    \/** Called when the Url changes. *\/\n    UPROPERTY(BlueprintAssignable, Category = &quot;Web Browser|Event&quot;)\n    FOnUrlChanged OnUrlChanged;\n\n    \/** Called when a popup is about to spawn. *\/\n    UPROPERTY(BlueprintAssignable, Category = &quot;Web Browser|Event&quot;)\n    FOnBeforePopup OnBeforePopup;\n\npublic:\n\n    \/\/~ Begin UWidget interface\n    virtual void SynchronizeProperties() override;\n    \/\/ End UWidget interface\n\n    virtual void ReleaseSlateResources(bool bReleaseChildren) override;\n\n#if WITH_EDITOR\n    virtual const FText GetPaletteCategory() override;\n#endif\n\nprotected:\n    \/** URL that the browser will initially navigate to. The URL should include the protocol, eg http:\/\/ *\/\n    UPROPERTY(EditAnywhere, Category=Appearance)\n    FString InitialURL;\n\n    \/** Should the browser window support transparency. *\/\n    UPROPERTY(EditAnywhere, Category=Appearance)\n    bool bSupportsTransparency;\n\nprotected:\n    TSharedPtr&lt;class SWebBrowser&gt; WebBrowserWidget;\n\nprotected:\n    \/\/ UWidget interface\n    virtual TSharedRef&lt;SWidget&gt; RebuildWidget() override;\n    \/\/ End of UWidget interface\n\n    void HandleOnUrlChanged(const FText&amp; Text);\n    bool HandleOnBeforePopup(FString URL, FString Frame);\n\n};\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u6e90\u7801\u5206\u6790 Webrowser\u662f\u865a\u5e7b\u5b98\u65b9\u7684&#46;&#46;&#46;<\/p>\n","protected":false},"author":1,"featured_media":131,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false}}},"categories":[13],"tags":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/www.jinhaihan.top\/WordPress\/wp-content\/uploads\/2021\/10\/338856.jpg?fit=1920%2C1200&ssl=1","jetpack-related-posts":[{"id":186,"url":"https:\/\/www.jinhaihan.top\/WordPress\/maven%e6%8f%92%e4%bb%b6-%e5%92%8c-maven-publish-%e6%8f%92%e4%bb%b6%e4%bd%bf%e7%94%a8%e6%96%b9%e6%b3%95-md\/","url_meta":{"origin":64,"position":0},"title":"maven\u63d2\u4ef6 \u548c maven-publish \u63d2\u4ef6\u4f7f\u7528\u65b9\u6cd5.md","author":"Kim","date":"2022\u5e744\u670818\u65e5","format":false,"excerpt":"\u622a\u53d6\u8f6c\u8f7d\u81ea\u7f51\u7edc\uff0c\u65b9\u4fbf\u8bb0\u5f55\u77e5\u8bc6\uff0c\u975e\u539f\u521b \u4e00\u3001Maven\u63d2\u4ef6\u7684\u4f7f\u7528\u65b9\u6cd5 maven \u63d2\u4ef6\u662f Gradle\u2026","rel":"","context":"\u5728\u201cAndroid\u201d\u4e2d","block_context":{"text":"Android","link":"https:\/\/www.jinhaihan.top\/WordPress\/category\/bolg\/android\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.jinhaihan.top\/WordPress\/wp-content\/uploads\/2021\/10\/4869_pc.jpg?fit=1200%2C675&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.jinhaihan.top\/WordPress\/wp-content\/uploads\/2021\/10\/4869_pc.jpg?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.jinhaihan.top\/WordPress\/wp-content\/uploads\/2021\/10\/4869_pc.jpg?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.jinhaihan.top\/WordPress\/wp-content\/uploads\/2021\/10\/4869_pc.jpg?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":202,"url":"https:\/\/www.jinhaihan.top\/WordPress\/maple\/","url_meta":{"origin":64,"position":1},"title":"Maple","author":"Kim","date":"2022\u5e748\u670826\u65e5","format":false,"excerpt":"\u4ee5\u4e0b\u5185\u5bb9\u6458\u81eaMaple\u4ed3\u5e93\u7684Readme Maple Series V5 \u6ce8\u610f\u4e8b\u9879 \u56e0\u4e3a\u6211\u6ca1\u6709 ma\u2026","rel":"","context":"\u5728\u201c\u535a\u5ba2\u201d\u4e2d","block_context":{"text":"\u535a\u5ba2","link":"https:\/\/www.jinhaihan.top\/WordPress\/category\/bolg\/"},"img":{"alt_text":"down angle photography of red clouds and blue sky","src":"https:\/\/i0.wp.com\/www.jinhaihan.top\/WordPress\/wp-content\/uploads\/2022\/08\/pexels-photo-844297.jpeg?fit=1200%2C800&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.jinhaihan.top\/WordPress\/wp-content\/uploads\/2022\/08\/pexels-photo-844297.jpeg?fit=1200%2C800&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.jinhaihan.top\/WordPress\/wp-content\/uploads\/2022\/08\/pexels-photo-844297.jpeg?fit=1200%2C800&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.jinhaihan.top\/WordPress\/wp-content\/uploads\/2022\/08\/pexels-photo-844297.jpeg?fit=1200%2C800&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":87,"url":"https:\/\/www.jinhaihan.top\/WordPress\/cai%e4%b8%ad%e5%88%87%e6%8d%a2blackboard%e7%9a%84%e5%80%bc\/","url_meta":{"origin":64,"position":2},"title":"C++AI\u4e2d\u5207\u6362BlackBoard\u7684\u503c","author":"Kim","date":"2021\u5e749\u67089\u65e5","format":false,"excerpt":"\u9996\u5148\u5b9a\u4e49\u4e00\u4e2aFBlackboardKeySelector UPROPERTY(EditAnywher\u2026","rel":"","context":"\u5728\u201c\u865a\u5e7b4\/5\u201d\u4e2d","block_context":{"text":"\u865a\u5e7b4\/5","link":"https:\/\/www.jinhaihan.top\/WordPress\/category\/bolg\/unreal-engine\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.jinhaihan.top\/WordPress\/wp-content\/uploads\/2021\/10\/888563.png?fit=1200%2C675&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.jinhaihan.top\/WordPress\/wp-content\/uploads\/2021\/10\/888563.png?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.jinhaihan.top\/WordPress\/wp-content\/uploads\/2021\/10\/888563.png?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.jinhaihan.top\/WordPress\/wp-content\/uploads\/2021\/10\/888563.png?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":228,"url":"https:\/\/www.jinhaihan.top\/WordPress\/databinding%e7%bb%91%e5%ae%9a%e4%b8%8d%e5%90%8c%e4%b8%8a%e4%b8%8b%e6%96%87%e7%9a%84%e5%b1%9e%e6%80%a7\/","url_meta":{"origin":64,"position":3},"title":"Databinding\u7ed1\u5b9a\u4e0d\u540c\u4e0a\u4e0b\u6587\u7684\u5c5e\u6027","author":"Kim","date":"2022\u5e7412\u670830\u65e5","format":false,"excerpt":"\u7ed1\u5b9a\u67d0\u7236\u7ea7\u7684\u5c5e\u6027 \u5047\u8bbe\u573a\u666f\uff1a \u5b58\u5728\u4e00\u4e2a\u5df2\u7ecf\u8bbe\u7f6e\u4e86Item source\u7684ListView\uff0cListV\u2026","rel":"","context":"\u5728\u201cWPF\u201d\u4e2d","block_context":{"text":"WPF","link":"https:\/\/www.jinhaihan.top\/WordPress\/category\/bolg\/wpf\/"},"img":{"alt_text":"The Rhine\u2013Meuse\u2013Scheldt river delta in the Netherlands","src":"https:\/\/i0.wp.com\/www.jinhaihan.top\/WordPress\/wp-content\/uploads\/2022\/12\/49830289321_83c90a1dd4_b.jpg?fit=1024%2C683&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.jinhaihan.top\/WordPress\/wp-content\/uploads\/2022\/12\/49830289321_83c90a1dd4_b.jpg?fit=1024%2C683&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.jinhaihan.top\/WordPress\/wp-content\/uploads\/2022\/12\/49830289321_83c90a1dd4_b.jpg?fit=1024%2C683&ssl=1&resize=700%2C400 2x"},"classes":[]},{"id":232,"url":"https:\/\/www.jinhaihan.top\/WordPress\/ts%e7%9a%84%e8%af%b7%e6%b1%82%e5%b0%81%e8%a3%85\/","url_meta":{"origin":64,"position":4},"title":"TS\u7684\u8bf7\u6c42\u5c01\u88c5","author":"Kim","date":"2023\u5e741\u670831\u65e5","format":false,"excerpt":"\u9996\u5148\u5b89\u88c5axios npm install axios \u65b0\u5efarequest.ts \u8fdb\u884c\u521d\u59cb\u8bbe\u7f6e\u5e76\u8bbe\u5b9a\u2026","rel":"","context":"\u5728\u201c\u524d\u7aef\u201d\u4e2d","block_context":{"text":"\u524d\u7aef","link":"https:\/\/www.jinhaihan.top\/WordPress\/category\/bolg\/%e5%89%8d%e7%ab%af\/"},"img":{"alt_text":"purple and blue light digital wallpaper","src":"https:\/\/i0.wp.com\/www.jinhaihan.top\/WordPress\/wp-content\/uploads\/2023\/01\/pexels-photo-3780104.jpg?fit=1200%2C863&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.jinhaihan.top\/WordPress\/wp-content\/uploads\/2023\/01\/pexels-photo-3780104.jpg?fit=1200%2C863&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.jinhaihan.top\/WordPress\/wp-content\/uploads\/2023\/01\/pexels-photo-3780104.jpg?fit=1200%2C863&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.jinhaihan.top\/WordPress\/wp-content\/uploads\/2023\/01\/pexels-photo-3780104.jpg?fit=1200%2C863&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":37,"url":"https:\/\/www.jinhaihan.top\/WordPress\/databinding%e8%87%aa%e5%ae%9a%e4%b9%89%e6%96%b9%e6%b3%95%e3%80%81%e5%8f%82%e6%95%b0%e7%bb%91%e5%ae%9a%ef%bc%88bindingadapter%ef%bc%89\/","url_meta":{"origin":64,"position":5},"title":"DataBinding\u81ea\u5b9a\u4e49\u65b9\u6cd5\u3001\u53c2\u6570\u7ed1\u5b9a\uff08BindingAdapter\uff09","author":"Kim","date":"2020\u5e7411\u670830\u65e5","format":false,"excerpt":"\u53c2\u8003\u6587\u6863\uff1a https:\/\/blog.csdn.net\/guiying712\/article\/det\u2026","rel":"","context":"\u5728\u201cAndroid\u201d\u4e2d","block_context":{"text":"Android","link":"https:\/\/www.jinhaihan.top\/WordPress\/category\/bolg\/android\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.jinhaihan.top\/WordPress\/wp-content\/uploads\/2021\/10\/9d44955fb48b1ee67f28e63a99bbd4a2.jpg?fit=1200%2C675&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.jinhaihan.top\/WordPress\/wp-content\/uploads\/2021\/10\/9d44955fb48b1ee67f28e63a99bbd4a2.jpg?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.jinhaihan.top\/WordPress\/wp-content\/uploads\/2021\/10\/9d44955fb48b1ee67f28e63a99bbd4a2.jpg?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.jinhaihan.top\/WordPress\/wp-content\/uploads\/2021\/10\/9d44955fb48b1ee67f28e63a99bbd4a2.jpg?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]}],"_links":{"self":[{"href":"https:\/\/www.jinhaihan.top\/WordPress\/wp-json\/wp\/v2\/posts\/64"}],"collection":[{"href":"https:\/\/www.jinhaihan.top\/WordPress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.jinhaihan.top\/WordPress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.jinhaihan.top\/WordPress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.jinhaihan.top\/WordPress\/wp-json\/wp\/v2\/comments?post=64"}],"version-history":[{"count":2,"href":"https:\/\/www.jinhaihan.top\/WordPress\/wp-json\/wp\/v2\/posts\/64\/revisions"}],"predecessor-version":[{"id":67,"href":"https:\/\/www.jinhaihan.top\/WordPress\/wp-json\/wp\/v2\/posts\/64\/revisions\/67"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.jinhaihan.top\/WordPress\/wp-json\/wp\/v2\/media\/131"}],"wp:attachment":[{"href":"https:\/\/www.jinhaihan.top\/WordPress\/wp-json\/wp\/v2\/media?parent=64"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jinhaihan.top\/WordPress\/wp-json\/wp\/v2\/categories?post=64"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jinhaihan.top\/WordPress\/wp-json\/wp\/v2\/tags?post=64"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}