首頁>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()有什麼用?