User Tools

Site Tools


blog:2025-03-14-002



2025-03-14 C# call webdocument javascript function

  • c# 如何呼叫 call webbrowser 中 javascript function並傳值給該Function,該function如下:
  • <script type="text/javascript">
    //<![CDATA[
    var theForm = document.forms['aspnetForm'];
    if (!theForm) {
        theForm = document.aspnetForm;
    }
    function __doPostBack(eventTarget, eventArgument) {
        if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
            theForm.__EVENTTARGET.value = eventTarget;
            theForm.__EVENTARGUMENT.value = eventArgument;
            theForm.submit();
        }
    }
    //]]>
    </script>

AI Answer

  • 在 C# 中呼叫 WebBrowser 控制項的 JavaScript 函數,可以使用 InvokeScript 方法。以下是如何將值傳遞給 JavaScript 函數 __doPostBack 的示範:
  • 步驟
    • 確保 WebBrowser 控制項已經載入網頁,並且 JavaScript 函數可用。
    • 使用 InvokeScript 方法 來呼叫 JavaScript 函數並傳遞參數。
  • 範例程式碼
    • 以下是 C# 的範例程式碼,展示如何呼叫 __doPostBack 函數並傳遞 eventTarget 和 eventArgument 參數:
    • // 假設 webBrowser 是你的 WebBrowser 控制項
      string eventTarget = "YourEventTarget"; // 替換成你的事件目標
      string eventArgument = "YourEventArgument"; // 替換成你的事件參數
      
      // 確保網頁已經載入
      if (webBrowser.ReadyState == WebBrowserReadyState.Complete)
      {
          // 呼叫 JavaScript 函數
          webBrowser.Document.InvokeScript("__doPostBack", new object[] { eventTarget, eventArgument });
      }
      else
      {
          // 網頁尚未載入完成,可以考慮加入事件監聽器
          webBrowser.DocumentCompleted += (sender, e) =>
          {
              webBrowser.Document.InvokeScript("__doPostBack", new object[] { eventTarget, eventArgument });
          };
      }
  • 說明
    • InvokeScript 方法:這個方法允許你呼叫指定的 JavaScript 函數,並可以傳遞參數。
    • 事件監聽:如果網頁尚未完全載入,則可以透過 DocumentCompleted 事件來確保在網頁載入完成後再呼叫 JavaScript 函數。
  • 注意事項
    • 確保 JavaScript 函數在網頁中是可訪問的,並且沒有錯誤。
    • 根據你的需求,調整 eventTarget 和 eventArgument 的值。
    • 這樣,你就可以在 C# 中成功呼叫 WebBrowser 控制項的 JavaScript 函數並傳遞所需的參數了!

TAGS

  • 3 person(s) visited this page until now.

blog/2025-03-14-002.txt · Last modified: 2025/03/14 16:42 (external edit)