Skip to content

CoreWebView2Frame.ExecuteScriptAsync doesn't seem to do anything #2927

Open
@ppena-LiveData

Description

@ppena-LiveData

Description
Trying to run JavaScript within an <iframe> using CoreWebView2Frame.ExecuteScriptAsync() doesn't seem to do anything.

Version
SDK: 1.0.1466-prerelease
Runtime: 107.0.1418.26 (but probably doesn't matter for this issue)
Framework: WPF (but probably doesn't matter for this issue)
OS: Win11 (but probably doesn't matter for this issue)

Repro Steps
git clone https://github.com/MicrosoftEdge/WebView2Samples.git then apply the below patch and compile and run the WebView2WpfBrowser VS solution:

diff --git a/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs b/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs
index e0a9084..c9ac47e 100644
--- a/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs
+++ b/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs
@@ -120,6 +120,7 @@ namespace WebView2WpfBrowser
         IReadOnlyList<CoreWebView2ProcessInfo> _processList = new List<CoreWebView2ProcessInfo>();

         public CoreWebView2CreationProperties CreationProperties { get; set; } = null;
+        private WebView2 _webView;

         public MainWindow()
         {
@@ -142,6 +143,7 @@ namespace WebView2WpfBrowser

         void AttachControlEventHandlers(WebView2 control)
         {
+            _webView = control;
             // <NavigationStarting>
             control.NavigationStarting += WebView_NavigationStarting;
             // </NavigationStarting>
@@ -1608,6 +1610,12 @@ namespace WebView2WpfBrowser
         {
             _isNavigating = true;
             RequeryCommands();
+            _webView.ExecuteScriptAsync("window.debugTopLevelProp = 42");
+            _webView.CoreWebView2.FrameCreated += async (object sender1, CoreWebView2FrameCreatedEventArgs args) =>
+            {
+                await args.Frame.ExecuteScriptAsync("alert('this alert is within the frame')");
+                await args.Frame.ExecuteScriptAsync("window.debugFrameProp = 42");
+            };
         }

         void WebView_NavigationCompleted(object sender, CoreWebView2NavigationCompletedEventArgs e)
@@ -1668,7 +1676,7 @@ namespace WebView2WpfBrowser

         private string GetStartPageUri(CoreWebView2 webView2)
         {
-            string uri = "https://appassets.example/AppStartPage.html";
+            string uri = "https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe";
             if (webView2 == null)
             {
                 return uri;
diff --git a/SampleApps/WebView2WpfBrowser/WebView2WpfBrowser.csproj b/SampleApps/WebView2WpfBrowser/WebView2WpfBrowser.csproj
index 2ea3c5b..5ef2cde 100644
--- a/SampleApps/WebView2WpfBrowser/WebView2WpfBrowser.csproj
+++ b/SampleApps/WebView2WpfBrowser/WebView2WpfBrowser.csproj
@@ -1,7 +1,7 @@
 <Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
   <PropertyGroup>
     <OutputType>WinExe</OutputType>
-    <TargetFrameworks>netcoreapp3.0;net462</TargetFrameworks>
+    <TargetFrameworks>netcoreapp3.0;net472</TargetFrameworks>
     <UseWPF>true</UseWPF>
     <Authors>Hybrid Application Team</Authors>
     <Company>Microsoft</Company>
@@ -40,7 +40,7 @@
     </Content>
   </ItemGroup>
   <ItemGroup>
-    <PackageReference Include="Microsoft.Web.WebView2" Version="1.0.1414-prerelease" />
+    <PackageReference Include="Microsoft.Web.WebView2" Version="1.0.1466-prerelease" />
        <PackageReference Include="System.ValueTuple" Version="4.5.0" />
   </ItemGroup>
 </Project>
\ No newline at end of file

I would expect a popup message with this alert is within the frame show up, and using the JS Console in the browser Dev Tools, I would expect window.debugFrameProp to exist within every <iframe>, but in this case, the only thing that exists is window.debugTopLevelProp, at the top level context.

NOTE: I also tried adding an args.Frame.NavigationStarting event handler, but CoreWebView2Frame.ExecuteScriptAsync() also didn't seem to do anything in there.

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions