Как вызвать и передать аргументы методу JavaScript на странице, размещенной элементом управления.NET WebBrowser в С#?

62
7

Я хочу вызвать функцию JavaScript через С#, используя элемент управления WinForm WebBrowser. Я попытался выполнить поиск, но не смог найти ничего, что отвечало бы на мой вопрос, только решения, связанные с ASP.NET.

Заранее спасибо.

Редактировать:

Это единственный вопрос, который я нашел, что на самом деле есть ответ, который демонстрирует, как вызвать метод JavaScript с параметрами, а также показывает, как вызвать функцию.NET из JavaScript в элементе управления WebBrowser.

Я не думаю, что этот вопрос должен быть отмечен как дубликат, поскольку он добавляет хорошую ценность. Это первый хит в поисковой системе Google для "c# webbrowser call javascript function with parameters".

спросил(а) 2021-01-19T15:46:09+03:00 2 месяца, 3 недели назад
1
Решение
115

Это хороший пример, который я нашел здесь:

http://www.codeproject.com/Tips/127356/Calling-JavaScript-function-from-WinForms-and-vice

HTML/JavaScript

<html>
<head>
<script type="text/javascript">
function ShowMessage(message) {
alert(message);
}
function ShowWinFormsMessage() {
var msg = document.getElementById('txtMessage').value;
return window.external.ShowMessage(msg);
}
</script>
</head>
<body>
<input type="text" id="txtMessage" />
<input type="button" value="Show Message" onclick="ShowWinFormsMessage()" />
</body>
</html>

С#

public partial class frmMain : Form {
public frmMain() {
InitializeComponent();
webBrowser1.ObjectForScripting = new ScriptManager(this);
}
private void btnShowMessage_Click(object sender, EventArgs e) {
object[] o = new object[1];
o[0]=txtMessage.Text;
object result = this.webBrowser1.Document.InvokeScript("ShowMessage", o);
}
private void frmMain_Load(object sender, EventArgs e) {
this.webBrowser1.Navigate(@"E:\Projects\2010\WebBrowserJavaScriptExample\WebBrowserJavaScriptExample\TestPage.htm");
}

[ComVisible(true)]
public class ScriptManager {
frmMain _form;
public ScriptManager(frmMain form) {
_form = form;
}
public void ShowMessage(object obj) {
MessageBox.Show(obj.ToString());
}
}
}

ответил(а) 2021-01-19T15:46:09+03:00 2 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема