href=";javascript:…”;在FireFox的FB Iframe中,语法突然不起作用
突然,我所有的ASP.NET链接按钮(使用href=javascript:_PostBack…语法)都停止了对所有FireFox用户(各种版本)的工作 我缩小了范围,发现所有href=javascript:在FB Iframe中都不起作用 示例:这里有一个简单的例子:(使用Firefox访问此页面,以便自己查看)这是一个简单的html代码,使用JS调用alert('单击')href=";javascript:…”;在FireFox的FB Iframe中,语法突然不起作用,javascript,asp.net,facebook,iframe,Javascript,Asp.net,Facebook,Iframe,突然,我所有的ASP.NET链接按钮(使用href=javascript:_PostBack…语法)都停止了对所有FireFox用户(各种版本)的工作 我缩小了范围,发现所有href=javascript:在FB Iframe中都不起作用 示例:这里有一个简单的例子:(使用Firefox访问此页面,以便自己查看)这是一个简单的html代码,使用JS调用alert('单击') 然而,在FB IFrame之外,或者在一个简单的IFrame内,这段代码都能很好地工作,在除FireFox之外的所有其
然而,在FB IFrame之外,或者在一个简单的IFrame内,这段代码都能很好地工作,在除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>
所以只需使用jQuery将其从a href更改为click()或onclick code.:-) 编辑:尝试以下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,但目前我只能管理它。所以只需使用jQuery将其从a href更改为click()或onclick code.:-) 编辑:尝试以下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,但这是目前我所能做的。看看这是否有帮助
看看这是否有帮助
格雷格尔的想法很好。但是这个功能对我来说不起作用。。。。。 我的浏览器是firefox 7.0.1,使用jquery-ui-1.8.2 我会尝试下面的代码
....
var existingOnClick = $(this).attr('onclick');
alert('existingOnClick');
....
在我的例子中,它是show-up函数onclick(event){…click-codes…}
所以我修改代码就像
$(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 );
});
}
});
格雷格尔的想法很好。但是这个功能对我来说不起作用。。。。。 我的浏览器是firefox 7.0.1,使用jquery-ui-1.8.2 我会尝试下面的代码
....
var existingOnClick = $(this).attr('onclick');
alert('existingOnClick');
....
在我的例子中,它是show-up函数onclick(event){…click-codes…}
所以我修改代码就像
$(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 );
});
}
});
同样运行FF7.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);
});
}
});
多亏了上面的海报也运行了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);
});
}
});
$(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);
});
}
});
多亏了上面的海报
$(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:]
而且它工作得很好
这是一个很好的例子。我在我们的Facebook应用程序上也遇到了同样的问题。
我刚刚将此部分从[href^=javascript:]更改为[href^=“javascript:]
没有
href
属性的元素无效。(b) 也许它与@david有关,抱歉,用这个问题编辑了这篇文章。基本上,我不明白为什么这该死的东西停止工作了。。。。一定是facebook上的JS代码在做这件事。。。不知道什么,JS不是我的强项side@FelixKling第一个链接是有效的。无论是否使用相同的HREF,链接都会启动JS警报。第二个没有,只有insider Facebooks Iframe,并且只有在Firefox下,当我单击(2)时,它才发出警报,因为上面在FF 3.0上测试的所有三个链接在控制台中是否有任何错误?(a)a
没有href
属性的元素无效。(b) 也许它与@david有关,抱歉,用这个问题编辑了这篇文章。基本上,我不明白为什么这该死的东西停止工作了。。。。一定是facebook上的JS代码在做这件事。。。不知道什么,JS不是我的强项side@FelixKling第一个链接是有效的。无论是否使用相同的HREF,链接都会启动JS警报。这是第二个没有,而且只有insider Facebooks Iframe,而且只有在Firefox下,当我单击(2)时,它才发出警报单击,对于上面在FF 3.0上测试的所有三个链接,控制台中是否有任何错误?是的,这是一个解决方法,但这都是ASP.NET生成的代码,并且它仅在FF和FB Iframe中不起作用。。。FF或FB Iframe一定有问题…:(可能吧。但是当你弄明白的时候,把这当作一个临时的解决办法。只有当用户运行firefox并且在iframe中运行时才这样做,这样其他用户才不会受到影响。谢谢Greg!我会试试这个。你不会碰巧手头只有jquery脚本吧?:)我的JS和jquery技能很差:(@GregBala你是个幸运的人(名字很棒)。如果我的更新代码有效,请接受我的回答-我真的想获得1k代表!:-)是的,这是一个解决办法,但这都是ASP.NET生成的代码,它只在FF中不起作用,在FB IFrame中…FF或FB IFrame中一定有问题…:(可能吧。但是当你弄明白的时候,把这当作一个临时的解决办法。只有当用户运行firefox并且在iframe中运行时才这样做,这样其他用户才不会受到影响。谢谢Greg!我会试试这个。你不会碰巧手头只有jquery脚本吧?:)我的JS和jquery技能很差:(@GregBala你是个幸运的人(名字很棒)。如果我的更新代码有效,请接受我的回答-我真的很想超过1k代表!:-)谢谢David,这是有道理的,但是,我不明白为什么它在框架之外工作,而不是inframe…这是一个长线如果你的/客户端浏览器最近已经更新尝试清除你的缓存并查看它修复它Hanks David,这是有道理的,但是,我不明白为什么它在框架之外工作,而不是inframe…这是一个长线如果你的/客户端ts浏览器最近已更新尝试清除缓存并查看其修复Hanks Johnny!我在升级到jquery 1.6.4时注意到了相同的问题!非常棒,一个小时前才遇到此问题谢谢Johnny!我在升级到jquery 1.6.4时注意到了相同的问题!非常棒,大约一个小时前才遇到此问题