突然间,我所有的ASP.NET LinkButtons(使用href = javascript:__ PostBack ...语法)都停止了所有FireFox用户(各种版本)的工作
我缩小了范围,发现只有所有 href = javascript:在FB iframe中无效。
示例:这里有一个简单的例子:https://apps.facebook.com/realmofempires_stg/(使用Firefox访问此页面以便自己查看)这是一个简单的HTML代码,其中JS调用alert('clicked')
<a onclick="alert('clicked');" >WORKS</a>
<a href="javascript:alert('clicked');" >does NOT WORK</a>
然而,这段代码在FB IFrame https://staging.realmofempires.com/chooserealm.aspx之外运行得非常好,或者在一个简单的Iframe https://staging.realmofempires.com/chooserealminiframe.aspx内,它可以在除FireFox之外的所有其他浏览器中工作
问题:为什么它在FF中不起作用?
html页面的确切代码:
<a onclick="alert('clicked');" >(1) WORKS: CLICK ME - How come this onclick=alert(a); works</a
<a href="javascript:alert('clicked');" >(2) DOES NOT WORK: href="javascript:alert('clicked');</a>
答案 0 :(得分:2)
答案 1 :(得分:2)
$(function () {
var isInIframe = (window.top != window);
if ($.browser.mozilla && isInIframe) {
$('a[href^="javascript:"]').each(function () {
var newOnClick = $(this).attr('href').replace(/^javascript:/i, '');
var existingOnClick = this.getAttribute('onclick');
existingOnClick = (existingOnClick ? (existingOnClick + ';') : '') + newOnClick;
this.setAttribute('onclick', existingOnClick);
});
}
});
这是一个很好的例子。我的Facebook应用程序遇到了同样的问题。 我刚刚将这部分从[href ^ = javascript:]更改为[href ^ =“javascript:”] 而且效果很好。
答案 2 :(得分:1)
所以只需使用jQuery将其从href更改为click()或onclick代码。 : - )
编辑:试试这个jQuery:
$(function() {
var isInIframe = (window.top!=window);
if ($.browser.mozilla && isInIframe) {
$('a[href^=javascript:]').each(function() {
var newOnClick = $(this).attr('href').replace(/^javascript:/i, '');
var existingOnClick = $(this).attr('onclick');
if (existingOnClick)
newOnClick = existingOnClick + ';' + newOnClick;
$(this).attr('onclick', newOnClick);
});
}
});
它没有经过测试,它不是最有效的JS,但它是我现在可以管理的所有内容。
答案 3 :(得分:1)
GregL的想法很好。但是这个功能对我不起作用..... 我的浏览器是firefox 7.0.1,并使用jquery-ui-1.8.2。
我会尝试下面的代码
....
var existingOnClick = $(this).attr('onclick');
alert('existingOnClick');
....
在我的情况下,它显示功能onclick(事件){....点击代码...} 。不仅仅是我的点击代码
所以我修复了代码......
$(function() {
var isInIframe = (window.top!=window);
if ($.browser.mozilla && isInIframe) {
$('a[href^=javascript:]').each(function() {
var newOnClick = $(this).attr('href').replace(/^javascript:/i, '');
var existingOnClick = this.getAttribute('onclick');
existingOnClick = (existingOnClick ? (existingOnClick + ';') : '') + newOnClick ;
this.setAttribute('onclick', existingOnClick );
});
}
});
答案 4 :(得分:0)
同样运行FF 7.0.1对我来说既不起作用,但是一个小小的改变也让我在路上。
$(function () {
var isInIframe = (window.top != window);
if ($.browser.mozilla && isInIframe) {
$("a").each(function () {
var newOnClick = $("a").attr("href").replace(/javascript:/gi, '');
var existingOnClick = this.getAttribute('onclick');
existingOnClick = (existingOnClick ? (existingOnClick + ';') : '') + newOnClick;
this.setAttribute('onclick', existingOnClick);
});
}
});
感谢上述海报