คำถามติดแท็ก javascript

ใช้สำหรับคำถามเกี่ยวกับรหัส JavaScript ที่เฉพาะเจาะจงมากสำหรับ Drupal

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
วิธีเรียกใช้ Drupal.attachBehaviors หลังจาก Ajax ที่ประสบความสำเร็จ
ฉันมีโมดูลที่อัพเดตโหนดผ่าน 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, ); ... } …
10 7  ajax  javascript 

8
วิธีเพิ่มป๊อปอัพการยืนยัน JS เมื่อคลิกปุ่ม #ajax
ฉันมีอินพุตปุ่ม FAPI พื้นฐานที่เปิดใช้งาน #ajax และใช้งานได้ดี แต่ฉันต้องการเพิ่ม JS "คุณแน่ใจหรือไม่" ยืนยันป๊อปอัพเมื่อคลิกปุ่มก่อนที่รหัสจะทำงานจริงและฉันไม่แน่ใจว่าจะทำอย่างไรเพราะ JS ของ FAPI ดูเหมือนว่าจะกินคลิกก่อนที่ฉันจะไปถึงไม่ว่าฉันจะทำอะไร ฉันได้ลองเพิ่มตัวจัดการ 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?')" ), …
10 7  forms  ajax  javascript 

5
จะเพิ่มจาวาสคริปต์แบบมีเงื่อนไขลงในธีมได้อย่างไร
ฉันต้องการใช้สคริปต์Selectivizrเพื่อจำลองตัวเลือก CSS3 ใน IE6-8 แต่ฉันมีเวลายากที่จะเพิ่มลงในธีมของฉัน จนถึงตอนนี้พยายาม: 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) ใช้drupal_add_js ()ใน template.php ของฉัน …
10 7  theming  javascript 

2
บังคับให้ Drupal แนบพฤติกรรม Drupal กับเนื้อหา ajaxed ใหม่ [only Drupal.attachBeh พฤติกรรม () ไม่ทำงานอย่างถูกต้อง]
ฉันกำลังทำโพสต์จำนวนมากบน drupal.org เกี่ยวกับหัวข้อนี้ แต่น่าเสียดายในบริบทที่ไม่ถูกต้อง เนื้อหา Ajaxed ไม่ได้แนบ JS และ CSS (ฟอรัม) ที่จำเป็น เนื้อหา Ajaxed ไม่ได้แนบ JS และ CSS (ปัญหา) ที่จำเป็น ฉันคิดว่านั่นไม่ใช่ปัญหาดังนั้นฉันลองใช้วิธีอื่นและอาจเป็นวิธีแก้ปัญหา การโหลดหน้า PHP ทั้งหมดและแยกส่วนที่แน่นอนด้วย ajax ไม่ได้ทำงานอย่างถูกต้อง ดังนั้นฉันคิดว่าฉันสามารถปล่อยให้ drupal โหลดเนื้อหาและฉีดมันด้วย ajax ลงใน div ฉันทำแบบสอบถามด้วย hook_preprocess_page และ hook_preprocess_node ที่กำลังมองหา "ajax = 1" ใน URL ที่ร้องขอจากนั้นให้เนื้อหาที่ไม่มีหน้าทั้งหมดเท่านั้น และตอนนี้ด้วยความช่วยเหลือของไฟล์ tpl.php บางอันในทางทฤษฎีฉันสามารถ จำกัด เอาต์พุตของ drupal เพียง …
10 7  ajax  javascript 

3
วิธีที่ดีที่สุดในการลดขนาด JavaScript รวมของ drupal (โดยอัตโนมัติ) คืออะไร
เพิ่งเรียกใช้Google pagespeedผ่านเว็บไซต์ drupal 6 ที่เพิ่งสร้างใหม่และรายงาน: 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. ไฟล์ดังกล่าวถูกสร้างขึ้นผ่านวิธีการรวม JavaScript เริ่มต้นของ drupal แต่เห็นได้ชัดว่าอาจมีขนาดเล็กลง 18% (ซึ่งเป็นเรื่องใหญ่สำหรับไซต์นี้) วิธีใดที่ถือว่าดีที่สุดเมื่อพูดถึงการลดจาวาสคริปต์ในเว็บไซต์ drupal โดยไม่ทำให้โค้ดที่มีอยู่เสียหาย?

5
hook_preprocess_page (): วิธีบอกหน้ามุมมองอย่างไร
ฉันกำลังเขียนโมดูลที่กำหนดเองที่จำเป็นต้องแทรกไฟล์จาวาสคริปต์และ 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 

3
ซ่อนกลุ่มฟิลด์ CCK โดยใช้ #states ใน hook_form_alter () หรือไม่
ฉันมีโมดูลที่กำหนดเองและฉันพยายามซ่อน CCK fieldgroup โดยใช้ "#states" เมื่อมีการเลือกรายการบางรายการในรายการเลือกแบบหล่นลง ฉันได้ลองใช้สถานะจากภายใน 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 เช่นนั้นความคิดเห็นไปที่ลิงค์ตอบกลับเมื่อคลิกปุ่มตอบ เป็นไปได้ผ่านการดู? ถ้าไม่เป็นตัวเลือกที่ดีที่สุดของฉันคืออะไร UPDATE ฉันเปิดใช้งานโมดูลที่ชื่อ ajax comments วิธีนี้ใช้งานได้ดีกับระบบความคิดเห็น drupal ที่เป็นค่าเริ่มต้น แต่ไม่ค่อยมีมุมมอง ฉันเพิ่มคลาสที่จำเป็นและได้รับสิ่งพื้นฐานในการทำงาน แต่ความคิดเห็นที่เพิ่มใหม่จะไม่ปรากฏจนกว่าคุณจะรีเฟรชหน้าเว็บ ข้อความ (อยู่ในคิวสำหรับการกลั่นกรอง) จะปรากฏที่ด้านล่างของหน้า หากมีคนตั้งค่าโมดูลนี้สำเร็จด้วยมุมมองโปรดแจ้งให้เราทราบ

4
วิธีสร้างปุ่มแบบฟอร์มเรียกว่าจาวาสคริปต์เท่านั้น?
ฉันกำลังทดลองกับ 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' …
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 


4
เหตุการณ์ที่เรียกใช้หลังจากการเติมข้อความอัตโนมัติทำงานและวิธีเรียกคืนค่าที่เลือก
ฉันมีโหนดเพิ่มฟอร์มด้วยการอ้างอิงคำที่ใช้วิดเจ็ตเติมข้อความอัตโนมัติ ฉันต้องการ "tid" ของคำที่เติมโดยผู้ใช้โดยใช้วิดเจ็ตการเติมข้อความอัตโนมัติ

3
วิธีทำให้ jQuery ทำงานกับ Drupal 7 - สำหรับมือใหม่
ฉันได้อ่านบทช่วยสอนออนไลน์มากมายเกี่ยวกับวิธีการทำให้ jQuery ทำงานบน drupal 7 แม้ว่าจะมีโค้ดและตัวอย่างมากมาย แต่สิ่งที่ฉันไม่สามารถหาได้คือโค้ดที่วางไว้ตรงไหน (อาจเป็นที่ชัดเจนสำหรับนักพัฒนาส่วนใหญ่) ดังนั้นสิ่งที่ฉันทำคือ 1) ฉันสร้างบล็อกที่กำหนดเองใหม่ 2) ตรงนั้นจาก drupal UI ฉันเขียนโค้ด (function ($) { $(document).ready(function(){ // jquery here }); })(jQuery); 3) ฉันแสดงบล็อก แต่ไม่ได้โหลด jquery ฉันกำลังอ่านว่าฉันควรจะวางรหัสนี้ในไฟล์เทมเพลต, ไฟล์ธีม, ไฟล์ css, ไฟล์ข้อมูลและฉันไม่รู้อะไรเลย! มันไม่ชัดเจนสำหรับฉันในไฟล์ที่แน่นอนและในพา ธ ที่ฉันต้องใส่โค้ดด้านบนเพื่อให้ทำงานได้อย่างถูกต้อง? คำแนะนำใด ๆ? ขอบคุณมาก!
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.