Javascript用jquery修补程序替换document.write(ln)
一个名为Joomla的有严重缺陷和迟钝的软件经常让我头疼 示例代码 我有以下代码: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> &
<!-- .... -->
<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>