javascript - PHP minify 函数似乎破坏了内联 JS?

标签 javascript php minify

我有以下缩小功能:

public static function minify($buffer)
{
    $search = array(
        '/\>[^\S ]+/s',
        '/[^\S ]+\</s',
        '/(\s)+/s'
    );
    $replace = array(
        '>',
        '<',
        '\\1'
    );
    $buffer = preg_replace($search, $replace, $buffer);
    return $buffer;
}

此函数与 ob_start() 一起使用,以缩小我的 html 输出。该函数取自此处:https://stackoverflow.com/a/6225706/4601581

这个函数好像毁了我的一些JS。示例:我单击一个按钮来执行一些 JS:

<button type="button" class="btn btn-<?= Config::$ELEMENT_COLOR ?> btn-block" onclick="addLastInput(<?= $mask->getId() ?>)">Do it</button>

我给addLastInput的$id只是一个数字,取自$mask->getId()

我还有这个小 JS 代码来填充一些数据数组:

<script>lastSubmissionData[<?=$mask->getId()?>] = '<?=json_encode($lastSubmissionData)?>';</script>

最后,我实际上想使用给定的参数(id)和数据数组来执行我的 JS 函数:

function addLastInput(maskId) {
        var data = lastSubmissionData[maskId];
        for (var i = 0; i < data.length; i++) {
            // TODO
        }
    }

每当我只加载页面时,它只会在 Chrome 控制台中告诉我Uncaught SyntaxError: Unexpected end of input。每当我这样做而不使用 minify 函数并完全注释 ob_start() 时,它就可以工作并且我可以使用它。

结论:正如链接 SO 答案的评论所暗示的那样,minify 函数似乎阻止了我的内联 JS。问题:我该如何解决这个问题?我什至在谷歌上搜索了其他缩小解决方案,例如:https://gist.github.com/tovic/d7b310dea3b33e4732c0

所有这些似乎都无法通过破坏我的网站来发挥作用。让我使用 JS 代码并仍然缩小 html 输出的最佳解决方案是什么?

最佳答案

不要使用这个minify()功能。它坏了。

此函数最终会删除内联 Javascript 代码中一些语义上有意义的换行符,例如出现在单行注释末尾的换行符。 (例如,它将您的示例 Javascript 函数转换为以 { // TODO } } 结尾的单行。)

这个函数也会破坏一些 HTML 结构。特别是它会破坏<pre>的内容标签,因为它不认识到空格在该上下文中很重要。

(顺便说一句,这两个警告都在您获得此代码的帖子的高度赞扬的评论中提到了!)

关于javascript - PHP minify 函数似乎破坏了内联 JS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34618943/

相关文章:

javascript - 使用 var 作为对象的键(特别是 jQuery.animate)

php - 获取数据并将其放入图表中的最佳方法?

javascript - ng-click 同时具有用于后备的 href

php - PHP mysqli query 和 fetch_(row/assoc) 是否使用实时数据?

javascript - IE7 不读取 CSS 和 JS 包

javascript - 为什么 Electron 为每个窗口生成一个进程?

php - Magento - 加载管理面板页面时出现 MySQL 错误

php - 从表中删除行并使用引导模式作为确认

javascript - Gulp 缩小所有 css/js 并移动到具有相同结构的文件夹?

javascript - Closure 编译器导出 Typescript 类和函数