Questions tagged «javascript»

将其用于有关Drupal特有的JavaScript代码的问题。

5
如何防止行为附加功能被附加两次?
我的行为增加on了一些复选框。 (function($) { Drupal.behaviors.mymodule = { attach: function (context, settings) { $('.skip-line', context).on('change', function(){ // some code if ( confirm(Drupal.t('Apply to all languages?')) ) { // applying... } }); } }; })(jQuery); 它工作得很好,但是复选框在AJAX加载的部分中。如果我重新加载表单的该部分,则单击它们将弹出两次确认窗口。现在,我知道可以连续调用内部函数了,但是我希望确保仅一次将它添加到我的元素中,因此只能调用一次。我怎样才能做到这一点?
11 javascript 

3
成功Ajax之后如何触发Drupal.attachBehaviors
我有一个模块,当单击链接时,该模块通过ajax更新节点。 该链接是一个切换,它应在第一次单击时将节点更新为值1,然后在随后的单击中将节点更新为0,以此类推。就像打开/关闭某些内容一样。 下面的代码在页面加载后的第一次点击上有效,但在随后的点击上无效。我相信每次单击后都必须调用/触发Drupal.attachBehaviors,但是我不知道该怎么做。 模块 function mymodule_menu() { $items['mypath/%/%/ajax'] = array( 'title' => 'My title', 'page callback' => 'mymodule_ajax_callback', 'page arguments' => array(1,2), 'access arguments' => array('access content'), 'type' => MENU_CALLBACK, ); ... } function mymodule_ajax_callback($id, $status) { //Validation[...] //Node Update using $id as the nid and $status as the field …
10 7  ajax  javascript 

8
单击#ajax按钮时如何添加JS确认弹出窗口
我有一个已启用#ajax的基本FAPI按钮输入,并且工作正常,但是我想添加一个JS“您确定吗?” 在代码实际运行之前单击该按钮时会弹出确认对话框,我不确定该怎么做,因为无论我做什么,FAPI的JS似乎都在吞噬单击之前的内容。 我尝试添加一个内联onclick处理程序,如下所示: $form['search_filters']['channels']['channel_delete_' . $channel->nid] = array( '#type' => 'button', '#name' => 'channel_delete_' . $channel->nid, '#value' => 'Delete', '#attributes' => array( 'class' => array('confirm'), 'onclick' => "return confirm('Are you sure you want to delete that?')" ), '#button_type' => 'no-submit', '#ajax' => array( 'callback' => 'delete_channel_callback', 'wrapper' => 'channel_container_' . …
10 7  forms  ajax  javascript 

5
如何在主题中添加条件javascript?
我想使用Selectivizr脚本模拟IE6-8中的CSS3选择器。 但是我很难将其添加到主题中。到目前为止尝试: 1)强制将其放入html.tpl.php头部分: <!--[if lt IE 9]> <script src="<?php print base_path() . path_to_theme(); ?>/js/selectivizr.js"></script> <![endif]--> 但是base_path()在D7中似乎没有返回任何内容(至少在html.tpl.php中-可能在page.tpl.php中)。而且我知道这不是Drupal的方式。 2)添加到主题的.info文件中: scripts[] = selectivizr.js 但这当然是无条件的:( 3)在我的template.php中使用drupal_add_js()。 但是,我不确定是否可以在此处有条件地设置它?
10 7  theming  javascript 

2
强制Drupal将Drupal行为附加到新的ajax内容上(仅Drupal.attachBehaviors()不能正确工作)
我在drupal.org上做了很多有关该主题的文章,但不幸的是,背景不正确。 ajaxed内容未附加所需的JS和CSS(论坛) ajaxed内容未附加所需的JS和CSS(问题) 我认为这不是问题,所以我尝试使用另一种方法,也许这可能是解决方案。加载整个PHP页面并使用ajax提取某个div并不正确。所以我想,我可以让drupal仅加载内容并将其与ajax一起注入div。我用hook_preprocess_page和hook_preprocess_node进行了查询,该查询在请求的URL中查找“ ajax = 1”,然后只给出内容而不显示整个页面。现在在理论上,借助于某些tpl.php文件,我可以将drupal的输出限制为仅$ content。这就是问题所在。即使我以原始方式保留tpl.php文件,但从node-ajax.tpl.php中删除“ $ content”时,我的方法仍然有效。“以正确的方式工作”是指drupal不会重新加载整个页面,但当然不是内容。但是我无法向我自己解释,因为$ content变量中的原因,所以我认为,这只是生成内容的html。所以我的问题是,我如何将drupal的输出限制为仅包含内容,或者我是否执行了错误的步骤以使其正常工作。这是我正在使用的模块和js文件:my_ajax.module: <?php function my_ajax_init() { drupal_add_js(drupal_get_path('module', 'my_ajax') . '/my_ajax.js'); } function my_ajax_preprocess_page(&$vars, $hook) { if (isset($_GET['ajax']) && $_GET['ajax'] == 1) { $vars['template_file'] = 'page-ajax'; } } function my_ajax_preprocess_node(&$vars, $hook) { if (isset($_GET['ajax']) && $_GET['ajax'] == 1) { $vars['template_file'] = 'node-ajax'; …
10 7  ajax  javascript 

3
最小化drupal的汇总javascript(自动)的最佳方法是什么?
刚刚在我新创建的drupal 6网站上运行Google Pagespeed,它报告: Minifying the following JavaScript resources could reduce their size by 15.6KiB (12% reduction). Minifying http://[sites]/sites/default/files/js/js_9f19b87ffb72ca233ea7e45dda2f20f9.js could save 15.3KiB (18% reduction). See optimized version or Save as. 上面的文件是通过drupal的默认JavaScript聚合方法生成的,但显然可以小18%(对于本网站而言,这很重要)。在缩小drupal网站上的JavaScript而又不破坏任何现有代码的情况下,哪种方法被认为是最好的?

5
hook_preprocess_page():如何区分视图页面?
我正在编写一个自定义模块,该模块仅需要在“视图”页面中插入一些JavaScript和CSS文件。 我正在使用hook_preprocess_page,但是我不能确定当前页面是否来自视图: function mymodule_preprocess_page(&vars) { var_dump($vars); //output: nothings that reference the views! if([view page]) { drupal_add_js([...]); drupal_add_css([...]); // Rebuild scripts $scripts = drupal_get_js(); $vars['scripts'] = $scripts; // Same for css } } 我知道我可以使用模板文件(page-my_view_page_path.tpl.php),但是只有在启用了模块的情况下,才必须包括js和额外的CSS;所以我喜欢把这些东西直接放在我的模块代码中。 有想法吗?
10 views  7  theming  javascript 

4
如何创建模式窗口(弹出窗口)?
我正在尝试使用Drupal 8的核心功能在模式窗口中打开页面。不幸的是,很难找到有关它的一些官方文档,而且涉及该主题的大多数博客似乎都已过时。但据我所知,应该可以通过向a元素添加以下属性来创建模式对话框: class="use-ajax” data-dialog-type="modal" 因此,完整的示例如下所示: <a href="/impressum/lizenzen/43" class="use-ajax" data-dialog-type="modal"> <span class="glyphicon glyphicon-copyright-mark" aria-hidden="true"></span> </a> 在我的情况下/impressum/lizenzen/43是指向视图页面的路径。 这似乎有效,但仅当我以管理员身份登录时才有效。因为这似乎不是权限问题,所以我认为它与管理主题(Seven)有关,该主题可能包含一些Bootstrap(我在我的网站上使用的)可能没有的核心库。但是奇怪的是,在模式的标题栏中出现了字符串“ Array”,而不是页面标题,这让我认为是发生了意外的数组与字符串对话: 有人可以吗 带我去看核心模态API的官方文档, 向我解释一下,它仅以管理员身份工作的原因可能是什么。 最后告诉我,为什么实际上发生了一个数组到字符串的对话,称为模式?
10 8  javascript 

3
在hook_form_alter()中使用#states隐藏CCK字段组?
我有一个自定义模块,当在下拉选择列表中选择某个项目时,我试图使用“ #states”隐藏CCK字段组。 我试过使用hook_form_alter()中的状态,如下所示: $form['group_mygroup']['#states']['invisible'] = array( ':input[name="field_trigger[' . LANGUAGE_NONE. ']"]' => array( 'value' => 'hide' ), ); 这似乎无能为力。 我已经考虑过通过http://proofgroup.com/blog/2008/dec/modifying_cck_fieldgroups_hook_form_alter之类的各种站点来更改模块的权重。 但仍然无济于事。我可以使用状态隐藏字段组中的所有表单元素,但不能隐藏字段组本身。有谁有想法吗?
9 7  javascript 

6
如何通过视图和使用JS实现评论回复表单?
我们有一个使用视图的评论正文,其中有每个发布评论的名称,评论,图片和日期。在所有评论的末尾,我们都有一个评论主体,可以在其中添加评论。 现在,这对于线性注释系统非常有用,但是我们需要一个线程化系统。在视图中,我可以添加回复评论链接,但这会将我带到新页面。 我想要的是基于JavaScript的操作,例如,当单击“答复”按钮时,注释表单位于答复链接下方。通过视图可以做到吗? 如果没有,我最好的选择是什么? 更新 我启用了一个名为ajax注释的模块。这对于默认的drupal注释系统非常有效,但对于视图则不是那么有效。我添加了必需的类,并使基本功能正常工作,但是直到刷新页面后,新添加的注释才出现。该消息(排队等待)也在页面底部。 如果有人成功通过视图设置了此模块,请告诉我。

4
如何使表单按钮仅调用javascript?
我正在尝试使用JavaScript和Drupal表单。目前,我正在尝试以模块的管理形式创建一个按钮,该模块将使用JavaScript将选项附加到选择列表中。我遇到的问题是,当我单击按钮时,我的JavaScript会被调用,但整个表单会刷新。我查看了Forms API参考,认为可以在按钮上设置某种属性来阻止它,但是什么也没找到。有什么办法可以阻止按钮刷新页面,或者这是死路一条? $form['#attached']['js'] = array( drupal_get_path('module', 'test').'/js/test.js', ); $form['list'] = array( '#type' => 'select', '#options' => array(), '#attributes' => array( 'name' => 'sellist', ), '#size' => 4, ); $form['add_button'] = array( '#type' => 'button', '#value' => 'Add', '#attributes' => array( 'onclick' => "add_to_list(this.form.sellist, 'Append' + this.form.sellist.length);", ), ); //JavaScript function …
9 7  forms  javascript 


4
将JavaScript添加到特定的内容类型
我想知道基于内容类型将JavaScript文件添加到特定页面的最佳方法是什么。例如,我要添加以下内容: <script type='text/javascript' src='http://maps.google.com/maps/api/js?sensor=false'></script> 到目前为止,我所做的就是使用这种方式添加到我的特定内容类型中。对于map_page内容类型,我在页面中添加了以下两行代码-map_page.tpl.php。 drupal_add_js("http://maps.google.com/maps/api/js?sensor=false", 'external'); $scripts = drupal_get_js(); 还有其他更好的方法吗?如果可能的话可以举个例子,目前还不是很了解...
9 7  javascript 



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.