Php Firefox4/5未运行使用HTML_AJAX pear库连接到AJAX响应的JS
我在PEAR中使用HTML_AJAX包(承认是一个旧库,但它对我来说已经运行了好几年,我不想离开我的基础设施) 我遇到的问题是,随着Firefox 4和Firefox 5的推出,使用HTML_AJAX.replace(div_target,request_page)[API将div_target替换为request_page]的响应中包含的JavaScript已经停止工作 它可以在Chrome、IE9、Android、iPhone等上正常工作,但不能在FF4/5上正常工作 这是某种新功能、安全机制,还是仅仅是一个普通的老bug?如果这是一个bug,那么它是HTML_AJAX的bug(也就是说,您可以用jQuery来实现它)还是FF需要修复的东西 例如 此页面已存在:Php Firefox4/5未运行使用HTML_AJAX pear库连接到AJAX响应的JS,php,javascript,ajax,firefox,firefox4,Php,Javascript,Ajax,Firefox,Firefox4,我在PEAR中使用HTML_AJAX包(承认是一个旧库,但它对我来说已经运行了好几年,我不想离开我的基础设施) 我遇到的问题是,随着Firefox 4和Firefox 5的推出,使用HTML_AJAX.replace(div_target,request_page)[API将div_target替换为request_page]的响应中包含的JavaScript已经停止工作 它可以在Chrome、IE9、Android、iPhone等上正常工作,但不能在FF4/5上正常工作 这是某种新功能、安全机
<script type="text/javascript" language="JavaScript">
function do_replace(){
HTML_AJAX.replace("something", "index.php?key=value"); // index.php will have html mixed with JS and paste it to the div "something".
}
</script>
<div id="something" onclick="javascript:do_replace()">This text is to be replaced</div>
函数do_replace(){
HTML_AJAX.replace(“something”,“index.php?key=value”);//index.php将HTML与JS混合,并将其粘贴到div“something”中。
}
此文本将被替换
这是index.php:
BLA BLA BLA some text maybe a <div> or something
<script type="text/javascript" language="JavaScript">
alert("this has worked before, but stopped working on FF4&5 still works on Chrome Android etc.");
</script>
BLA BLA BLA BLA一些文本可能是
警报(“这在以前有效,但在FF4和FF5上停止有效,在Chrome Android等上仍然有效”);
我试图通过搜索找到答案,但没有找到任何结论。我很感激能在这件事上得到的任何帮助
BR Erik.我对PEAR中的HTML\u AJAX包也有同样的问题。在AJAX调用后,Firefox4或5不会执行任何内联脚本标记。在我看来,HTML_AJAX正在打破与内联脚本相关的HTML5安全标准 对于Firefox4,在文件末尾添加一个带有脚本标记的空标记解决了这个问题,但这只是一个难看的解决方法,实际上是FF4上的一个bug,是为FF5修复的
我不想改变框架,但是HTML_AJAX远远落后于新的框架。也许我们还没有发现真正的问题。Util.setInnerHtml检测gecko,并使用黑客来赢得性能。如果您删除该复选框,事情将得到修复。我不确定什么时候我会有机会修补并发布此版本,但这应该是一个快速的更改。您需要设置:
var good_browser = false;
在3个文件中的3个位置,它才能工作。对我来说,这3个文件是:
- HTML_AJAX.js
- HTML_AJAX_lite.js
- util.js
然后它成功了。这就是我解决它的方法 替换
var good_browser = (navigator.product == 'Gecko');
与
在3个文件中
HTML_AJAX.js
HTML_AJAX_lite.js
util.js.
谢谢你的洞察力。我已经试着联系首席程序员(@jeichorn在Twitter上),我希望他可能有时间来评论这个=)谢谢你的快速回复!我尝试在util.js(setInnerHTML函数)中将good_browser设置为false,但仍然没有成功:(要么我找错了位置,要么修复不够。请建议=)我们已经尝试了推荐的解决方案,在FF5(等)中似乎可以正常工作,但现在FF3.6的行为不正确。只是检查了一下PEAR是否已经更新了新版本,但没有这样的运气。
HTML_AJAX.js
HTML_AJAX_lite.js
util.js.