首页>Magento>source

我一直在努力获取信用表(其中任何人!)以自动检测信用卡类型.我发现一些脚本工作正常,直到我尝试将它们添加到信用卡模板.然后脚本消失或不显示在模板中. css和我添加到模板中的任何其他内容都会显示在源代码中,或者如果我查看Chrome中的"Inspect"而不是任何脚本。所以我尝试将它们添加到信用卡模板上方和下方的页面部分但是可以 也没办法.如何让脚本显示在模板中,为什么它们不会出现在那里? 它是内置的安全功能吗?

最新回答
  • 2019-12-5
    1 #

    您所遇到的是HTML是通过XMLHttpRequest注入的.嵌入式脚本作为结果响应的一部分被eval()所取代.你不会在DOM中看到它们. (我不记得这方面的技术解释,但谷歌是你的朋友)

    参考:http://api.prototypejs.org/language/String/prototype/evalScripts/

    如果没有真正看到您的代码,我无法评论您的代码无法使用/工作的原因.根据给定的链接,您的范围可能是错误的吗?

    你可以添加一个 debugger   脚本中的语句,并保持chrome开发人员控制台处于打开状态.如果一切正常,你应该在你的eval()代码中找到一个断点。

    您还可以考虑使用其他方法,将javascript保存在单独的.js文件中。 使用布局指令,您可以在初始单页签出加载时使用某些布局文件中的以下指令加载它.

    <checkout_onepage_index translate="label">
            <reference name="head">
                <action method="addItem"><type>skin_js</type><name>js/your_file.js</name></action>
            </reference>
        </checkout_onepage_index>
    

    这将在加载结帐时加载您的脚本。

    另一种选择是通过.phtml中的嵌入代码将给定的sript注入HEAD。

    这将完成这项工作:

    <script type="text/javascript">
    //<![CDATA[
      var x = document.getElementsByTagName("script");
      var header_already_added = false;
      for (var i=0; i< x.length; i++){
          if (x[i].src == "<?php echo $this->getSkinUrl('js/your_file.js') ?>"){
                 header_already_added = true;
          }
      }
      if (header_already_added == false){
        // add header if not already added
        var head = document.getElementsByTagName("head")[0];
        var s = document.createElement('script');
        s.type = 'text/javascript';
        s.src = '<?php echo $this->getSkinUrl('js/your_file.js') ?>';
        head.appendChild(s);
      }
    //]]>   
    </script>
    

    当teh .phtml加载

    时,上面的代码会将脚本文件加载到HEAD中

    同时检查控制台是否存在任何js错误.从页面上的其他内容出现的主要错误很可能会阻止嵌入代码的进一步加载/评估操作。

    希望有所帮助。

  • magento2:Magento 220错误:元素' referenceContainer',属性'在'之后的属性'' 不被允许
  • magento2:在magento 2中使用此代码$ resultPage-> setActiveMenu()有什么用?