4

Webページの1つにiframeがありrunat="server"、onloadイベントにjavascript関数が割り当てられています。
ページがレンダリングされると
"CS1012: Too many characters in character literal"
、runat = "server"属性を削除すると完全に機能しますが、runat="server"にiframeが必要であるためエラーが発生します。
どうすればこれを修正できますか?

<iframe id='contentFrame' name='contentFrame' 
   runat="server" width="500"
   onload="resizeFrame(document.getElementById('contentFrame'))">
 </iframe>
4

5 に答える 5

14

runat = "server"を使用すると、'onload'はButton.ClickのようなHtmlサーバーコントロールのC#イベントとして解析され始めます。コントロール/ページのクラス(JAVASCRIPTではない)にC#イベントハンドラーメソッドの名前を設定する必要があります。このコードは機能します:

<script runat="server">
    void contentFrame_onLoadServer(object sender, EventArgs e)
    {
        if (!IsPostBack)
            contentFrame.Attributes.Add("onLoad", "contentFrame_onLoadClient();");
    }
</script>
<script type="text/javascript">
    function contentFrame_onLoadClient() {
        resizeFrame(document.getElementById('<%=contentFrame.ClientID %>'));
    }
    function resizeFrame(element) {
        alert(element); // do your logic here
    }
</script>
<iframe 
    runat="server" 
    id='contentFrame' 
    name='contentFrame' 
    width="500" 
    onload="contentFrame_onLoadServer"
    />
于 2012-12-13T07:26:32.400 に答える
1

クライアント側のコードは.NETサーバー側のオンロードによって「占有」されているため、「ただ」追加することはできません。あなたはそれをコードで接続する必要があります(そして私は@Philippのコードを拡張しました):

<script runat="server">
void onIframeLoad(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        contentFrame.Attributes.Add("onload", "resizeFrame(document.getElementById('contentFrame'));");
    }
}
</script>
<iframe id='contentFrame' 
    name='contentFrame' 
    runat="server" width="500" 
    onload="onIframeLoad"/>
于 2012-12-13T07:48:42.390 に答える
0

runat="server"はIFrameのIDを変更します。

「document.getElementById('contentFrame')」を渡す代わりに、javascriptで「this」を渡します。

またはあなたも合格するかもしれません

document.getElementById('<%= contentFrame.ClientID%>')
于 2012-12-13T07:41:23.673 に答える
0

一重引用符を二重引用符に置き換えます。

< iframe id="contentFrame" name="contentFrame" runat="server" width="500" onload="resizeFrame(document.getElementById('contentFrame'))">
于 2012-12-13T06:59:05.397 に答える
0

document.getElementById('contentFrame')onloadメソッドで書き込むことはできません。代わりにjavascript関数で記述してください。

于 2012-12-13T07:12:43.570 に答える