1

私の投稿と重複して申し訳ありませんなぜ setTimeout が Chrome で 2 回発生するのに、IE や Firefox では発生しないのですか? .

ハイパーリンクをインラインで動作させるには、実際には次の JavaScript 呼び出しが必要なので、誰かアイデアがあるかどうか疑問に思っていました。いずれかのハイパーリンクをクリックすると、JavaScript 関数GenerateNewNumberが Chrome で 2 回起動しますが、IE や Firefox では起動しません。Chrome で 1 回クリックすると、その後のクリックで 1 回だけラベルに追加されます。繰り返しますが、Chrome 20.0.1132.57、IE9、および Firefox 13 を使用しています。

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="test.aspx.vb" Inherits="test" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title></title>
<script type="text/javascript" language="javascript">

    function GenerateNewNumber() {
        var randomnumber = Math.floor(Math.random() * 1234);
        document.getElementById('NumberLabel').innerHTML += '<br>' + 'Random Number is ' + randomnumber;
    }

</script>
</head>
<body>
    <form id="form1" runat="server">

    <asp:LinkButton ID="Button1" runat="server" OnClientClick="GenerateNewNumber(); return false;">Click for Random Number Test 1</asp:LinkButton><br />
    <a id="Button2" href="#" onclick="GenerateNewNumber(); return false;" target="_blank">Click for Random Number Test 2</a>
    <asp:Label ID="NumberLabel" runat="server"></asp:Label>
    </form>
</body>
</html>

ご協力いただきありがとうございます。

4

1 に答える 1

0

これは、使用している Google 拡張機能が原因である可能性があります。ただし、この問題があり、ハイパーリンクの onclick で return false が指定されていることを思い出します。平凡な微調整により、2回の発砲が停止したことを覚えています。

「return false」の後ろのセミコロンを削除してみてください。

この記事を確認すると、Google Chrome で asp.NET LinkBut​​ton が機能しない

この方法を試すことができます。

protected override void OnPreInit(EventArgs e)
{
    if (Request.UserAgent != null && (Request.UserAgent.IndexOf("AppleWebKit") > 0))  // added for compatibility issues with chrome 
    {
         this.ClientTarget = "uplevel";
    }

     base.OnPreInit(e);
}

最後に、リンク/アンカー以外の要素/タグの使用を検討する必要があります。

于 2012-07-22T03:28:41.703 に答える