2


0

asp.netの単純なjquery helloworldにRegisterStartupScriptが必要なのはなぜですか?

Webフォーム内にjavascriptを含めるだけでhelloworldを呼び出そうとしましたが、実行するとchromeとfirefoxの両方でページが空白になります。 Firefoxのエラーは

_ 「XML解析エラー:要素が見つかりません」 _

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="jquery01._Default" %>









    function helloWorld() {
        $("#divSample").append("Hello World!!");
    }







    helloWorld();

コードビハインドを追加する必要がありました:

protected override void  Render(HtmlTextWriter writer)
{

    this.Page.ClientScript.RegisterStartupScript(this.Page.GetType(),
        "startup", "helloWorld();");
    base.Render(writer);
}

その場合、それは動作しますが、なぜ最初の構文を使用できないのか理解できませんが、なぜそれがそんなに単純なもののために複雑なのですか?

私も提案を試みましたが、うまくいきませんでした:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="jquery01._Default" %>









    function helloWorld() {
        $("#divSample").append("Hello World!!");
    }


    $(document).ready(function () {
        helloWorld();
    });

更新:ASP.NETはajax / jqueryを使用すると状況によっては信頼できない場合がありますか? http://chiragrdarji.wordpress.com/2010/02/17/xml-parsing-error-no-element-found/

4 Answer


1


helloWorld()呼び出しをjQuery $(document).ready構文でラップしてみてください。

    $(document).ready(function(){
        helloWorld();
    });


1


FireBug for FIreFoxやChromeの開発者ツールなどのデバッガーで実行しようとしましたか? (まだIEを試していない…​ 上記のコードをコピーして貼り付けたところ、うまくいきました…​


1


スクリプトタグで `delay =" delay "`属性を使用してみてください。

helloWorld();

IEは、htmlがまだレンダリングされているときにDOM構造を変更しようとしても気に入らない。 この属性は、レンダリングが完了するまでスクリプトの実行を遅らせるようブラウザに指示します。


0


「Render」オーバーライドを削除しようとしましたか?

protected override void Render(HtmlTextWriter writer)
{
    this.Page.ClientScript.RegisterStartupScript(this.Page.GetType(),
        "startup", "helloWorld();");
    base.Render(writer);
}