【问题标题】:How do I insert a script tag in to the top/beginning of head tag using BHO?如何使用 BHO 将脚本标签插入头部标签的顶部/开头?
【发布时间】:2013-10-22 07:15:13
【问题描述】:

我在 c# 中使用此代码将 js 注入 html 页面。这工作正常。

IHTMLElement head = (IHTMLElement)((IHTMLElementCollection)document.all.tags("head")).item(null, 0);

IHTMLScriptElement scriptObject3 = (IHTMLScriptElement)document.createElement("script");
scriptObject3.type = @"text/javascript";
scriptObject3.text = System.IO.File.ReadAllText(Environment.CurrentDirectory + @"\all.js");
((HTMLHeadElement)head).appendChild((IHTMLDOMNode)scriptObject3);

但我想将其作为 head 标签中的第一个元素。

<head>
//INSERT SCRIPT HERE
 <script type="text/javascript" src="common.js"></script>
 <script type="text/javascript" src="omni-controls.js"></script></head>

如何在 c# 中做到这一点。

【问题讨论】:

标签: c# bho


【解决方案1】:

你可以这样做:

if (!ClientScript.IsStartupScriptRegistered("youScriptName"))
{
     ClientScript.RegisterStartupScript(GetType(), "youScriptName", 
     @"<script type=""text/javascript"" src=""yourpath/script.js""></script>");
}

你应该在Page_Load做这个

【讨论】:

    【解决方案2】:

    获取 HEAD 的第一个子元素并将其用作元素方法 insertBefore 的第二个参数。

    【讨论】:

    • 奇怪的是,在 一些 情况下,这将返回 S_OK 和 NULL 第一个孩子。 Win 7 和 IE 11 32 位,但 Win XP 和 IE 8 工作正常。是的,这在 document_complete 事件上失败了,而且并非在所有情况下都失败。
    猜你喜欢
    • 2012-10-10
    • 2015-06-30
    • 1970-01-01
    • 1970-01-01
    • 2023-02-17
    • 1970-01-01
    • 2023-03-16
    • 2023-04-09
    • 1970-01-01
    相关资源
    最近更新 更多