溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

WebKit.Net winform程序中c#與js怎樣互調(diào)

發(fā)布時(shí)間:2021-09-13 09:46:36 來源:億速云 閱讀:114 作者:柒染 欄目:編程語言

本篇文章為大家展示了WebKit.Net winform程序中c#與js怎樣互調(diào),內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

實(shí)驗(yàn)1:

按鈕1事件:

currentPage.browser.DocumentText =
                "<html><head><title>Test Page</title></head><body>" +
                "<p id=\"testelement\" style=\"color: red\">Hello, World!</p>" +
                "<div><p>A</p><p>B</p><p>C</p></div>" +
                "<script type=\"text/javascript\">" +
                "function f() { window.open('http://www.pudn.com/Download/item/id/2111740.html', 'myWindow'); }</script>" + 
                "</body></html>

按鈕2事件:

currentPage.browser.StringByEvaluatingJavaScriptFromString("f()");

這樣當(dāng)點(diǎn)擊按鈕1然后再點(diǎn)擊按鈕2則會(huì)跳到pudn中。實(shí)驗(yàn)成功。

實(shí)驗(yàn)2:

tomcat的webapps/ROOT下有一個(gè)index.html文件:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<p id="testelement" >Hello, World!</p>
<div><p>A</p><p>B</p><p>C</p></div>
hello world spring boot3
<script type="text/javascript">
function f() { window.open('https://www.baidu.com', 'myWindow'); }
</script>
</body>
</html>

在按鈕事件中:

currentPage.browser.IsScriptingEnabled = true;

currentPage.browser.StringByEvaluatingJavaScriptFromString("f()");

能成功跳到baidu.能執(zhí)行browser_NewWindowRequest和browser_NewWindowCreated事件,但不能執(zhí)行browser_DocumentCompleted,除非browse執(zhí)行刷新操作。

https://bbs.csdn.net/topics/390962337/ 和 https://sourceforge.net/p/webkitdotnet/discussion/939856/thread/daaed049/ 有說64位的BUG,或多線程的原因,我做的實(shí)驗(yàn)都是異常。

        private void newWindowToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("This is likely to cause a crash. Continue?",
                "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
            {
                var thread = new Thread(new ThreadStart(MyThread));
                thread.SetApartmentState(ApartmentState.STA);
                thread.Start();
            }
        }

        private void MyThread()
        {
            Application.Run(new MainForm());
        }

好象這樣設(shè)置了ApartmentState.STA也不起作用。

上述內(nèi)容就是WebKit.Net winform程序中c#與js怎樣互調(diào),你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI