WebBrowser链接项目资源

时间:2018-02-24 13:48:22

标签: javascript c# html winforms webbrowser-control

我的项目资源中有 index.html script.js 。在html文件中,我尝试将脚本 script.js 与它链接:

<script src="script.js"></script>

此外,我的表单具有 WebBrowser 控件,其网址为 index.html 。这里没问题。

问题是当我测试应用程序并运行 WebBrowser 时,它会给我一个脚本错误,这意味着没有文件名 script.js ,并且无法链接它

我应该在这里输入什么而不是???? ??

<script src="????/script.js"></script>

这是错误: Script error

2 个答案:

答案 0 :(得分:2)

您可以使用以下任一选项:

  • 将js文件内容包含在同一个html文件中。
  • 在运行时将html和js文件复制到同一目录中,例如临时目录。

示例

private void Form1_Load(object sender, EventArgs e)
{
    var path = System.IO.Path.GetTempFileName();
    System.IO.File.Delete(path);
    System.IO.Directory.CreateDirectory(path);
    var indexPath = System.IO.Path.Combine(path, "index.html");
    var scriptPath = System.IO.Path.Combine(path, "script.js");
    System.IO.File.WriteAllText(indexPath, Properties.Resources.index);
    System.IO.File.WriteAllText(scriptPath, Properties.Resources.script);
    webBrowser1.Navigate(indexPath);
}

答案 1 :(得分:1)

好的,既然你要求它,基本的想法是将你的JS文件读成一个字符串,然后创建一个脚本标记元素,然后将其插入到正文中。如果使用visual studio,还记得从属性窗口将JS文件设置为Copy to Output Directory

你有一个如下所示的JS文件:

alert("Include me");

您的CS文件如下所示:

using System.Windows.Forms;
using System.IO;
namespace stackoverflow
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            var path = Path.Combine(System.Environment.CurrentDirectory, "test.html");
            var page = System.IO.File.ReadAllText(path);
            webBrowser1.Navigate(path);
            webBrowser1.DocumentCompleted += WebBrowser1_DocumentCompleted;
        }
        private void WebBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            var newScript = webBrowser1.Document.CreateElement("script");
            webBrowser1.Document.Body.InsertAdjacentElement(HtmlElementInsertionOrientation.AfterEnd, newScript);
            var path =Path.Combine(System.Environment.CurrentDirectory, "test.js");
            var script =File.ReadAllText(path);
            newScript.InnerText = script;
        }
    }
}

我使用的HTML文件如下所示:

<!doctype html>
<html>
    <head>
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <title>Test</title>
    </head>
    <body>
        <div id="container">

          <h1>Test Text</h1>
        </div><!-- content container -->

        <script>
        </script>
    </body>
</html>

当我这样做时,我最终得到的结果如下:  enter image description here