Javascript用jquery修补程序替换document.write(ln)

Javascript用jquery修补程序替换document.write(ln),javascript,jquery,joomla,Javascript,Jquery,Joomla,一个名为Joomla的有严重缺陷和迟钝的软件经常让我头疼 示例代码 我有以下代码: <!-- .... --> <div id="abc"><!----></div> <script type="text/javascript"> jQuery.get(url, function(data){ jQuery('#abc').html(data); }, 'data'); </script> &

一个名为Joomla的有严重缺陷和迟钝的软件经常让我头疼

示例代码

我有以下代码:

<!-- .... -->
<div id="abc"><!----></div>
<script type="text/javascript">
    jQuery.get(url, function(data){
        jQuery('#abc').html(data);
    }, 'data');
</script>
<!-- .... -->
澄清

Joomla爱好者们,不要接近这个话题。我现在想活活烧死一个joomla dev


生成的代码document.write完全是joomla做的…没有插件、组件或任何东西。

我个人不会使用joomla,如果必须的话,我可能会在代码中寻找那段代码并用我的激光枪销毁它

但是,一个快速的“n”脏补丁可能是PHP中的输出缓冲,您可以使用它捕获页面的全部内容,在其中发挥您的魔力,然后将其输出到浏览器。因此,在您的情况下,您可以使用它来查找/替换/删除文档


我是否建议采用这种方法?不,但如果你真的不能触摸生成的代码,我也不知道,那么相信你的判断,你就没有太多选择了。

可以覆盖文档。使用自己的函数编写,该函数缓冲输出文本,并在延迟后将其写入某个元素的innerHTML。这并不完全可靠,但它可以抓住许多常见情况

但是,不能通过使用innerHTML/html编写内容来加载内容。jQuery的加载试图解决一些问题,但它从根本上被破坏了,甚至在document.write出现问题之前,document.write确实很糟糕


您可以尝试将内容写入innerHTML,选择脚本元素,用空div替换它们,并评估它们的文本这是load试图做的事情,但实际上并不成功。重写document.write以将完成的输出抛出到div。但是这将是混乱和不可靠的。我不知道您的用例是什么,但几乎可以肯定有一种比这更好的方法。

一种方法是在该文件夹中以.js结尾的所有文件上使用程序员记事本2进行查找和替换。这可能有助于实现这一目标
除非我禁用/删除javascript,这是一个巨大的数字。

而你的问题是你的头痛??不。Joomla代码陈旧、不一致且愚蠢。我需要做我上面提到的替换,以使其按预期工作。JS的String.replace有几个局限性,我不确定做我想要替换的事情的最佳方式是什么。我必须承认,对于人们对joomla自卑这一不可否认的事实的完全预期的行为,我感到非常有趣——他们在这个话题上扔石头;-。如果你是一个致力于你的客户的开发人员,你不会抱怨你的客户想要的框架有多糟糕,而是建议他一个更好的框架。你好!我更喜欢Wordpress而不是joomla。再说一次,我更喜欢我自己的框架!但是,嘿,你知道客户。我不能做任何输出缓冲——我正在通过ajax阅读joomla的一篇文章。我确实了解客户,所以这就是为什么我提供了一个看似合理的解决方案,而不是仅仅谈论joomla我有多喜欢它;哦,但是你控制了那个页面上的joomla文章页面输出缓冲区吗?还是你在寻找javascript的替代品?嘿,我真的不该受到责备。我在家里的电脑上写了一篇长篇大论,关于joomla的大约1k个字,我从未发表过。。。你知道我如何按照我在修复中的建议进行替换吗?如果你想用JavaScript进行转换,你可能会在写之前进行转换。看到数据中的信息,您可能希望在数据中搜索文本以查找document.write,并用自己的方法替换它。。应该不会太难吧。String.replace仅替换一项。2.由于可能有不同的块,我需要分别替换它们,即,使每个脚本块以不同的唯一跨度写入。这就是我试图做的,但正如您正确指出的,重写document.write/ln并没有真正的帮助,因为我不知道将内容放在何处。因此,我至少需要逐步替换,即保留每个项目的id。
<!-- .... -->
<script type="text/javascript">
   document.write('<span');
   // perhaps write classes
   document.write('>');
   // and the rest of the code
</script>
<!-- .... -->
<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>