Questions tagged «javascript»

JavaScript(JS)是一种客户端脚本语言,它允许与用户交互,控制浏览器,异步通信以及更改显示的文档内容。默认情况下,Magento 1带有prototype.js库,Magento 2带有jQuery。使用“ prototype-js”和“ jquery”标签来查询有关这些库的问题。

5
如何在所有页面的前端添加JS文件
我已经阅读了3页的Google搜索结果,了解如何为所有页面加载JS文件,但仍然无法执行。 我有一些疑问,希望有人可以解决。 我需要创建一个模块里面app/code用requirejs-config.js?或者我可以requirejs-config.js在主题内部放一个? 我应该放什么东西requirejs-config.js? 代码在我的.js文件中应该是什么样?我看到您不能使用jQuery,document.ready并且必须有一个define([ 我应该放什么东西define([? 如果我有第三方jQuery模块,是否需要对其进行编辑以使其正常工作? 我是否需要将xml放在某处以告诉magento my.js文件存在? 如果我在app/code其中创建了一个包含所有js代码的模块,那么它将包含所有页面中的所有内容吗?我该如何实现?


7
将所有包含的Javascript移到</ body>之前
有谁知道如何使Magento的所有JS脚本标签(例如&lt;script type="text/javascript" src="http://sitename.com/js/prototype/prototype.js"&gt;&lt;/script&gt;在结束前渲染)&lt;/body&gt;? 我曾经尝试过这种方法,但是我得到了一个错误,我认为这是沿着addJS方法使用的,在我使用它的地方(可能在参考页脚中)不可用。

2
在Magento 2中扩展/覆盖JS
由于Magento2使用RequireJS加载脚本,并且不再有皮肤文件夹,所以我遇到了一个问题: 如何用修改后的版本替换Magento的模块JS文件? 例如,属于Magento_Checkout扩展名的opc-checkout-method.js。据我所知,它没有在requirejs-config.js文件中定义。 我的扩展名在Magento_Checkout之后加载,因此其requirejs-config.js数据附加在生成的requirejs-config文件的末尾。 还是应该以其他方式执行此操作而不替换整个脚本?

10
生产模式下合并的JS和CSS不起作用
我处于开发人员模式,一切都很棒,当我更改为生产模式时,CSS和JS的合并选项似乎被忽略了,它重新列出了所有css和js。 此外,产品页面仅以开发人员模式显示产品图片,更改为生产模式后它们会消失。 有想帮助我的想法吗? 关键是,我正在这样做。 这是我依次执行的操作: bin/magento setup:upgrade bin/magento indexer:reindex bin/magento setup:static-content:deploy bin/magento setup:di:compile bin/magento deploy:mode:set production bin/magento setup:static-content:deploy 在开始之前,“合并”选项为“是”,并且我处于开发人员模式。

1
Magento 2:未捕获的TypeError:无法读取(section-config.js:33)中未定义的属性'*'
这是重复的问题,但是在添加产品和从购物车页面中删除商品时,我遇到了同样的问题。 我花了将近一天的时间解决问题,但没有运气希望有人可以帮助我。 控制台中的错误消息: 未捕获到的TypeError:无法读取(section-config.js:33)中未定义的属性'*' 编辑:我已经运行了部署&删除所有缓存仍然仍然存在问题。

4
Magento 2:主题中的requirejs-config.js?
是否可以requirejs-config.js通过Magento主题包含文件(或以其他方式配置RequireJS)?还是保留了Magento模块的功能?到目前为止,关于主题结构的开发文档信息尚不明确。 开发人员文档未提及有关RequireJS的任何内容-但是,主题确实包含,web这意味着javascript可以与它们捆绑在一起。如果javascript可以与主题捆绑在一起,则意味着RequireJS模块可以与主题捆绑在一起,如果RequireJS模块可以与主题捆绑在一起,则该模块可能需要特定的RequireJS配置。 我天真地假设主题将具有这种功能,但是我无法以这种方式找到任何文档,也没有一个下午可以花时间在Magento的requirejs-config.js文件上进行必要的代码拼写,包括。

1
Magento 2如何应用KnockoutJS绑定
根据对KnockoutJS文档的粗略阅读,初始化一个非常基本的Knockout视图如下所示 // This is a simple *viewmodel* - JavaScript that defines the data and behavior of your UI function AppViewModel() { this.firstName = "Bert"; this.lastName = "Bertington"; } // Activates knockout.js ko.applyBindings(new AppViewModel()); 即-您创建一个旨在用作对象构造函数的javascript函数,实例化该对象,然后将该对象传递到ko.applyBindings全局剔除对象(ko)的方法中 但是,在Magento 2中,如果您使用Grid UI加载后端页面,则Magento将初始化js/core/app.jsRequireJS模块 /** * Copyright © 2016 Magento. All rights reserved. * See COPYING.txt for …

2
自定义表单验证-Magento
我正在尝试使用jQuery在Magento中实现一些自定义表单验证,但是我不确定我是否具有正确的方法。 基本上,我需要验证以下内容: 仅数字字段需要具有.00才能验证1到1.00 字母必须大写 号码不能大于9.99 字段中没有空格 我正在考虑使用jQuery,并着手编写一些东西来验证表单: &lt;script&gt; jQuery(document).ready(function() { jQuery.validator.addMethod("integer", function(value, element) { return this.optional(element) || /^-?\d+$/.test(value); }, "A positive or negative non-decimal number please"); function(field, length) { if (!numericRegex.test(length)) { return false; } return (field.value.length &lt;= parseInt(length, 4)); }, } &lt;/script&gt; 问题是我找不到其他验证字段的功能,请提供一些帮助。

2
Google CDN jQuery,带有Magento布局XML中的本地后备
我已完成以下操作,以在Magento中包含来自Google CDN的jQuery: &lt;default&gt; &lt;reference name="head"&gt; &lt;block type="core/text" name="google.cdn.jquery"&gt; &lt;action method="setText"&gt; &lt;text&gt;&lt;![CDATA[&lt;script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"&gt;&lt;/script&gt;&lt;script type="text/javascript"&gt;jQuery.noConflict();&lt;/script&gt;]]&gt; &lt;/text&gt; &lt;/action&gt; &lt;/block&gt; &lt;/reference&gt; &lt;/default&gt; 但是,当我想通过本地后备实现(效果很好)来实现时,我最终将其添加到.phtml中,如下所示: &lt;script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"&gt;&lt;/script&gt; &lt;script&gt; if (!window.jQuery) { document.write('&lt;script src="/path/to/your/jquery"&gt;&lt;\/script&gt;'); } &lt;/script&gt; 是否有一个更优雅的这样的方式在local.xml中,而不是推回退入&lt;text&gt;节点,因为我有做的jQuery.noConflict? 编辑: 提请注意问题的另一部分-是否有包含jQuery的社区模块适合您?如果他们有本地jQuery,那就很好-如果他们使用Google CDN-甚至更好。如果不存在,我很乐意创建一个。 是否有任何扩展插件可以处理此问题,而无需我自己引导它?

3
Magento 2从安装脚本添加自定义产品属性验证
[ 'type'=&gt;'int', '后端'=&gt;'', 'frontend'=&gt;'', '标签'=&gt;'XXXX', '输入'=&gt;'文本', 'frontend_class'=&gt;'验证大于零的值', '源'=&gt;'', 'global'=&gt; \ Magento \ Eav \ Model \ Entity \ Attribute \ ScopedAttributeInterface :: SCOPE_GLOBAL, 'visible'=&gt;是, 'required'=&gt;是, 'user_defined'=&gt;否, '默认'=&gt; 0, '可搜索'=&gt;否, '可过滤'=&gt; true, '可比较'=&gt;否, 'visible_on_front'=&gt;否, 'used_in_product_listing'=&gt;是, '唯一'=&gt;否 ] 我正在添加自定义产品属性,该属性可以正常运行,但无法添加validate-greater-than-zero验证。 如果我们查看其中的任何属性Input Validation for Store Owner,选择选项中的验证次数将有限。 validate-number,validate-digits,validate-email,validate-url,validate-alpha,validate-alphanum 这些是“产品属性”部分中应用的唯一验证。

2
如何使用mixins Magento 2.1.1重写小部件功能
我们有 swatch-renderer.js 此文件中有一些小部件。 .... $.widget('mage.SwatchRenderer', { .... /** * @private */ _init: function () { if (this.options.jsonConfig !== '' &amp;&amp; this.options.jsonSwatchConfig !== '') { this._sortAttributes(); this._RenderControls(); } else { console.log('SwatchRenderer: No input data received'); } }, /** * @private */ _sortAttributes: function () { this.options.jsonConfig.attributes = _.sortBy(this.options.jsonConfig.attributes, function (attribute) { …

1
为什么Magento 2使用RequireJS`map`而不是`path`
在Magento 2的RequireJS实现中,许多核心模块都使用类似这样的配置 map: { '*': { editTrigger: 'mage/edit-trigger', addClass: 'Magento_Translation/add-class' } } 在RequireJS中,map配置指令允许开发人员告诉RequireJS 加载模块X并使用模块Y时,请用模块Z替换模块Y- 但仅适用于模块X 或者,在代码中 map: { 'modulex':{ 'moduley':'modulez' } } 该map功能基本上允许您通过配置交换模块定义-用Magento来说,它是javascript的模块重写功能。 不过,我不清楚Magento大量使用物业*的钥匙map。 map: { '*': { editTrigger: 'mage/edit-trigger', addClass: 'Magento_Translation/add-class' } } 所述*基本上说*为做到这一点映射所有模块,以及其预期用途的情况下是是提供一个基本模块的混叠,可以更具体的模块被改变。 但是,Magento似乎用它代替了RequireJS的pathsproperty。即似乎Magento可以通过以下方法实现相同的目的 paths: { 'editTrigger': 'mage/edit-trigger', 'addClass': 'Magento_Translation/add-class', } 然后在需要时有选择地进行特定映射。 有谁知道为什么Magento选择map:*路径别名作为其方法?即-是我对map与path不完整的区别的理解-还是这是“一件六件,另一件六件”的事情之一。还是Magento通过这种方式获得一些额外的行为。 不要求解决特定问题,而是在开始撰写有关它的要求之前澄清对RequireJS和Magento实现的误解:)

3
在视图Js或html文件中获取基本网址或动态网址
我想出了要在前端获取动态网址的方法,我可以简单地定义mage/url并将其用作url.build('&lt;Modulename&gt;/&lt;controllername&gt;/&lt;action&gt;/') 当我为后端尝试相同的操作时,它没有返回预期的结果。 它给出了当前的URL,并附加了我给出的路径。 谁能解释这是怎么回事。我需要在某个地方定义baseUrl吗?

1
Magento 2 minicart,欢迎消息,其他在客户登录后禁用页面缓存的情况下不起作用
使用Magento 2.0.4缓存,更具体地说,启用页面缓存,一切正常。 如果我禁用它,请清除cookie,然后以客户身份登录,而不是minicart中的产品。 欢迎消息并不正确。我必须从产品页面将产品添加到购物车才能看到迷你车。比起结帐,我的国家/地区没有显示在地址摘要中(送货地址已添加到我的帐户中)。 我已经调试完毕,看来问题出在: module-customer/view/frontend/web/js/customer-data.js。Cookie private_content_version已设置在中module-page-cache/view/frontend/web/js/page-cache.js并在中使用customer-data.js。参见customerData::reload功能。 在禁用页面缓存的情况下,不会像该功能dataProvider::getFromServer()那样从服务器加载数据。 当禁用页面缓存时,cookie private_content_version不在其中(不在页面之外执行page-cache.js)。但是cookie section_data_ids只有'*'和'messages'=&gt;为空(false或null)。 启用页面缓存后private_content_version,将section_data_ids具有并带有哪些键和值: *: null cart: 123 compare-products: 123 customer: 123 directory-data: 123 last-ordered-items: 123 multiplewishlist: 123 review: 123 wishlist: 123 在启用页面缓存的情况下登录后,在客户仪表板上,还有2个其他的ajax请求加载数据: http://test.localhost/customer/section/load/?sections=&amp;update_section_id=false&amp;_=123 http://test.localhost/customer/section/load/?sections=directory-data&amp;update_section_id=false&amp;_=123 这些包含具有客户特定数据和目录数据的json对象,例如所有国家和地区。通过这些呼叫,在结帐时,地址摘要将显示国家/地区名称。请参阅:module-customer/view/frontend/web/js/sections-config.js 和module-checkout/view/frontend/web/js/view/shipping-address/address-renderer/default.js,函数getCountryName。 这是Magento 2错误还是我搞砸了?谢谢

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.