Magento 动态加载JavaScript代码 正则表达式剥离JavaScript代码 解决JavaScript不执行问题

<?php
$regex = "/\<script(.*?)?\>(.|\\n)*?\<\/script\>/i";         
$scripts = array();
$phpuphtml="<div>test</div><script>alert(\"test\")</script><script>alert(\"test2\")</script>";
preg_match_all($regex, $phpuphtml, $scripts);                //抽取js到$scripts
$phpuphtml=rawurlencode(preg_replace($regex,'',$phpuphtml)); //删除js代码并格式化
$scriptshtml="";
foreach ($scripts[0] as $script){                          //遍历累加js
     $scriptshtml.=$script;
}
$scriptshtml=rawurlencode($scriptshtml);                   //格式代码
?>
<script>
 require(["jquery"],function($){                           //引用jquery

    $divhtml= $("<div></div>");
    $divhtml.html(unescape("<?= $phpuphtml ?>"));
    $divscripts= $("<div></div>");
    $divscripts.html(unescape("<?= $scriptshtml ?>"));
    $('body').append($divhtml);                             //添加HTML
    $('body').append($divscripts);                          //添加js
    $divscripts.trigger('contentUpdated');                  //运行js
});
</script>

注意:目前只支持普通js代码执行问题,magento :type="text/x-magento-init"  类型的还无法执行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值