这是我的设置。我正在使用.NET:
我有一个Main.aspx可以调用它。该页面继承了一个母版页,主页面通常包括jQuery库和我们用于范围全局的jQuery的其他包含
在Main.aspx中是一个HTML普通的香草IFrame:
因为IFrame是另一个.aspx页面。让我们称之为所有时态和目的Sub.aspx
在Sub.aspx中,我有以下代码:
<!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错误。
答案 0 :(得分:1)
您的功能永远不会执行。删除window.fbAsyncInit = function() { }
,代码将按解释运行。或者,在DOM准备就绪后使用$(document).ready(function() { });
执行它。
此外,父框架中的Javascript库不会被子项继承。但您可以引用它们,例如parent.fbAsyncInit = function() { }
或parent.jQuery();
。
答案 1 :(得分:0)
解决。那个init函数应该是唯一的东西。移动了window.fbAsyncInit之外的所有其他代码,因为我不想异步加载其他代码,我想在DOM完成后加载它。应该同时加载的唯一内容是该SDK的注册/初始化。