Chr*_*ian -8 javascript jquery joomla
一个名为"Joomla"的严重缺陷和延迟的软件给了我一般的头痛.
示例代码
我有以下代码:
<!-- .... -->
<div id="abc"><!----></div>
<script type="text/javascript">
jQuery.get(url, function(data){
jQuery('#abc').html(data);
}, 'data');
</script>
<!-- .... -->
Run Code Online (Sandbox Code Playgroud)
我从该网址获取此代码:
<!-- .... -->
<script type="text/javascript">
document.write('<span');
// perhaps write classes
document.write('>');
// and the rest of the code
</script>
<!-- .... -->
Run Code Online (Sandbox Code Playgroud)
问题
Joomla 使用snipets 是现代的document.write.这完全抹杀了任何AJAX html,除非我禁用/删除javascript,这是一个巨大的NO.
修复
我需要逐步替换文本/代码,如下所示:
<span id="ob1"><!----></span>
<script type="text/javascript">
_ob_begin(1);
_ob_write(1, '<span');
// perhaps write classes
_ob_write(1, '>');
// and the rest of the code
_ob_end(1);
</script>
Run Code Online (Sandbox Code Playgroud)
澄清
Joomla爱好者,不要接近这个话题.我觉得现在正在燃烧一个joomla dev.
生成的代码(document.write)是严格的joomla正在做...没有插件,组件或任何东西.
Jim*_*ark 12
一种方法是使用Programmers Notepad 2对该文件夹中以.js结尾的所有文件进行查找和替换.这可能有助于实现"除非我禁用/删除javascript,这是一个巨大的NO."
可以document.write使用自己的函数覆盖缓冲输出文本,并在延迟后将其写入某个元素innerHTML.这不是完全可靠的,但它可以捕获许多常见情况.
但是,您无法<script>通过使用innerHTML/ html())编写内容来加载内容.jQuery load()试图解决一些问题,但它基本上已经被打破,甚至在问题出现之前document.write(实际上是肮脏的).
您可以尝试编写内容innerHTML,挑选script元素,用空div替换它们,以及eval()它们的文本(这是load()尝试做的事情,而不是真正成功),document.write重写将完成的输出抛给div.但它会变得混乱和不可靠.我不知道你的用例是什么,但几乎肯定有比这更好的方法.
我个人不会使用Joomla,如果我不得不去寻找代码来寻找那段代码并用我的激光枪摧毁它.
但是,一个快速的'n'脏修复可能output buffering在PHP中,您可以使用它来捕获页面的全部内容,在那里做你的魔术,然后将其输出到浏览器.因此,在您的情况下,您可以使用它来查找/替换/删除document.write.
我建议这种方法吗?不,但如果你真的无法触及生成的代码(我不知道,所以相信你的判断),你就没有多少选择了.
| 归档时间: |
|
| 查看次数: |
1644 次 |
| 最近记录: |