无法将click()事件绑定到HTML控件

时间:2010-07-21 19:51:18

标签: javascript

这是我的设置。我正在使用.NET:

  1. 我有一个Main.aspx可以调用它。该页面继承了一个母版页,主页面通常包括jQuery库和我们用于范围全局的jQuery的其他包含

  2. 在Main.aspx中是一个HTML普通的香草IFrame:

  3. 因为IFrame是另一个.aspx页面。让我们称之为所有时态和目的Sub.aspx

  4. 在Sub.aspx中,我有以下代码:

  5. <!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">
            <link href="Content/Styles/Site.css" rel="stylesheet" type="text/css" />
            <title></title>
        </head>
        <body>
        <form id="form1" runat="server">
            <div id="facebookPhotos-iFrameContent">
                <div>
                    <p id="buttoTestContainer">                    
                        <input type="image" id="btnLogin" src="images/loginBtn.jpg" />
                    </p>
                </div>
            </div>
        </form>    
        <script type="text/javascript">    
            var loginButtonID = 'btnLogin';
            //alert(loginButtonID);                   
            window.fbAsyncInit = function () {
                // Initialize/load the JS SDK
                // cookie is set to true to activate JS SDK cookie creation & management
                FB.init({ appId: facebookApplicationID, status: true, cookie: true, xfbml: false });
                alert("got here");
                // also handles the case when they are already logged in
                $('#' + loginButtonID).click(function () {
                    alert("login button was fired");
                    TestLogin();
                });
                //...rest of code
            });
    

    <!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"> <link href="Content/Styles/Site.css" rel="stylesheet" type="text/css" /> <title></title> </head> <body> <form id="form1" runat="server"> <div id="facebookPhotos-iFrameContent"> <div> <p id="buttoTestContainer"> <input type="image" id="btnLogin" src="images/loginBtn.jpg" /> </p> </div> </div> </form> <script type="text/javascript"> var loginButtonID = 'btnLogin'; //alert(loginButtonID); window.fbAsyncInit = function () { // Initialize/load the JS SDK // cookie is set to true to activate JS SDK cookie creation & management FB.init({ appId: facebookApplicationID, status: true, cookie: true, xfbml: false }); alert("got here"); // also handles the case when they are already logged in $('#' + loginButtonID).click(function () { alert("login button was fired"); TestLogin(); }); //...rest of code });

    问题:

    当尝试调试以确保调用.click()事件以便它绑定到我的控件时,我从未得到第一个警告“到达此处”,以便我知道JS至少被调用到那一点。所以不确定为什么。我在FireBug控制台中看到绝对没有JS错误。

2 个答案:

答案 0 :(得分:1)

您的功能永远不会执行。删除window.fbAsyncInit = function() { },代码将按解释运行。或者,在DOM准备就绪后使用$(document).ready(function() { });执行它。

此外,父框架中的Javascript库不会被子项继承。但您可以引用它们,例如parent.fbAsyncInit = function() { }parent.jQuery();

答案 1 :(得分:0)

解决。那个init函数应该是唯一的东西。移动了window.fbAsyncInit之外的所有其他代码,因为我不想异步加载其他代码,我想在DOM完成后加载它。应该同时加载的唯一内容是该SDK的注册/初始化。