我正在生成一个应该在影子框中打开的 Javascript 链接列表。最初,在任何给定的页面加载时(例如 Ctrl-F5),链接会在窗口中而不是在影子框中打开。如果我能通过运气或偶然的机会让它在影子框中打开,它会一直工作,直到页面再次重新加载。
这是页面中的标记:
<div id="portAgreementList">
<ul id="blAgreements"></ul>
</div>
这是在 blAgreements 中创建链接的 javascript:
function (data, status)
{
if (status == 'success')
{
if (data == '')
{
alert('URL returned no data.\r\n' +
'URL: ' + url);
return;
}
var jsonObj = StringToJSON(data); // StringToJSON function defined in /js/utilities.js
if (!jsonObj) { return; }
var items = '';
if ( jsonObj.items.length > 0 ) {
for (var xx = 0; xx < jsonObj.items.length; xx++) {
items += '<li><a rel="shadowbox;width=750;height=450;" href="' + jsonObj.items[xx].Url +'">' +
jsonObj.items[xx].Text +'</a></li>';
}
}
else {
items = '<li>You have no port agreements on file for this company.</li>';
}
$('#blAgreements').html(items);
Shadowbox.init();
}
}
我打电话给 Shadowbox.init(); 在我添加创建列表项之后,它有时会起作用。我想了解的是为什么它不一致以及如何使它更可靠。
更新 #1:这看起来可能是一个竞争条件。如果我加载页面,至少在 IE 中,并等待点击它最终会起作用。使用 IE8 我必须等待大约 3 秒。FF 似乎没有遵循这种行为。
更新 #2:使用 FF,如果我在页面加载后单击链接,它会像任何其他网页一样打开 URL。点击后退按钮并再次单击链接,URL 将在影子框中打开。