推迟在HTML中执行<script> - 根据用户的请求</script>

时间:2012-04-21 15:23:51

标签: php javascript html

我为WYSIWYG编辑器提供了一段PHP生成的JavaScript代码,如下所示:

<script>
code contains ', " etc.
</script>

只要此脚本出现在页面上,特定的textarea就会被WYSIWYG取代。但我想只在用户要求时才这样做。问题是,我无法将这个JavaScript变成PHP变量,因为编辑器的PHP方法replace()立即回复了javascript。

所以我想把这个<script>放到一个变量中,以便我可以在用户请求时调用它。有可能吗?

我想到了一个解决方案 - 将此<script>放入外部HTML文件并通过AJAX加载此文件。

2 个答案:

答案 0 :(得分:3)

为什么不将脚本回显到JS函数中,如下所示:

<script>
    function enableWYSIWYG() {
        // body of your code here
    }
</script>

然后有一个调用该功能的按钮来启用编辑器。

答案 1 :(得分:2)

在php中,可以使用输出缓冲来获取任何输出文本的函数(甚至是像?> TEXT <?php这样的文本)并将其存储在变量中。

你会做这样的事情:

ob_start();

replace(); // or whatever the function that generates the javascript is...

$script = ob_get_contents();

ob_end_clean();

为了能够稍后调用它,您可以执行以下操作:

$script = str_replace('<script>', '<script>function showEditor() {', $script);
$script = str_replace('</script>', '}</script>', $script);

echo $script;

这是相当hackish,可能会在以后遇到很多麻烦,特别是如果被调用的代码更改),所以我不会推荐它。不过,这可能是最简单的方法。