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

สำหรับคำถามเกี่ยวกับการเขียนโปรแกรมใน ECMAScript (JavaScript / JS) และภาษา / การใช้งานต่างๆ (ไม่รวม ActionScript) แท็กนี้ไม่ค่อยได้ใช้คนเดียว แต่ส่วนใหญ่มักจะเกี่ยวข้องกับแท็ก [node.js], [jquery], [json] และ [html]

9
วิธีป้องกันไม่ให้ IFRAME เปลี่ยนเส้นทางหน้าต่างระดับบนสุด
บางเว็บไซต์มีรหัสที่จะ "หยุดออก" ของIFRAMEเปลือกซึ่งหมายความว่าถ้าหน้าAจะโหลดเป็นIFRAMEภายในเพจPบางจาวาสคริปต์ในการเปลี่ยนเส้นทางหน้าต่างนอกAA โดยทั่วไป Javascript นี้จะมีลักษณะดังนี้: <script type="text/javascript"> if (top.location.href != self.location.href) top.location.href = self.location.href; </script> คำถามของฉันคือในฐานะผู้เขียนเพจหลักPและไม่ได้เป็นผู้เขียนเพจด้านในAฉันจะป้องกันไม่ให้Aทำการแบ่งออกได้อย่างไร ปล. สำหรับฉันแล้วดูเหมือนว่ามันควรจะเป็นการละเมิดความปลอดภัยข้ามไซต์ แต่ก็ไม่ใช่
135 javascript  html  iframe 

2
รับองค์ประกอบในตำแหน่งที่ระบุ - JavaScript
การใช้ Javascript ฉันจะระบุองค์ประกอบในตำแหน่งที่กำหนดได้อย่างไร โดยพื้นฐานแล้วฉันต้องการเขียนฟังก์ชันที่รับพารามิเตอร์อินพุตสองตัว (พิกัด x และ y) และส่งคืนองค์ประกอบ html ที่ตำแหน่งบนหน้าจอที่แสดงโดยพารามิเตอร์
135 javascript  html  dom 

3
ทำความเข้าใจกับ Event Loop
ฉันกำลังคิดถึงมันและนี่คือสิ่งที่ฉันคิดขึ้นมา: ลองดูโค้ดด้านล่างนี้: console.clear(); console.log("a"); setTimeout(function(){console.log("b");},1000); console.log("c"); setTimeout(function(){console.log("d");},0); มีคำขอเข้ามาและเอ็นจิน JS เริ่มดำเนินการโค้ดด้านบนทีละขั้นตอน สองสายแรกคือสายซิงค์ แต่เมื่อพูดถึงsetTimeoutวิธีการมันจะกลายเป็นการดำเนินการแบบ async แต่ JS กลับมาจากมันทันทีและดำเนินการต่อซึ่งเรียกว่าNon-BlockingหรือAsync. และมันยังคงทำงานอื่น ๆ ผลลัพธ์ของการดำเนินการนี้มีดังต่อไปนี้: acdb โดยพื้นฐานแล้วครั้งที่สองsetTimeoutจะเสร็จสิ้นก่อนและฟังก์ชันเรียกกลับของมันจะถูกเรียกใช้งานเร็วกว่าฟังก์ชันแรกและนั่นก็สมเหตุสมผล เรากำลังพูดถึงแอปพลิเคชันเธรดเดียวที่นี่ JS Engine ยังคงดำเนินการสิ่งนี้ต่อไปและเว้นแต่ว่าจะเสร็จสิ้นคำขอแรกจะไม่ไปที่คำขอที่สอง แต่สิ่งที่ดีคือมันจะไม่รอให้การดำเนินการบล็อกเหมือนsetTimeoutจะแก้ไขดังนั้นมันจะเร็วกว่าเพราะยอมรับคำขอที่เข้ามาใหม่ แต่คำถามของฉันเกิดขึ้นจากรายการต่อไปนี้: # 1:หากเรากำลังพูดถึงแอปพลิเคชันแบบเธรดเดียวกลไกใดที่ประมวลผลsetTimeoutsในขณะที่เอ็นจิ้น JS ยอมรับคำขอเพิ่มเติมและดำเนินการ เธรดเดี่ยวทำงานต่อไปยังคำขออื่น ๆ อย่างไร สิ่งที่ใช้ได้ผลในsetTimeoutขณะที่คำขออื่นเข้ามาและดำเนินการ # 2:หากsetTimeoutฟังก์ชันเหล่านี้ถูกเรียกใช้งานเบื้องหลังในขณะที่มีคำขอเข้ามาและกำลังดำเนินการมากขึ้นสิ่งที่ดำเนินการประมวลผลแบบ async อยู่เบื้องหลัง? สิ่งที่เราพูดถึงนี้เรียกว่าEventLoopอะไร? # 3:แต่ไม่ควรใส่วิธีการทั้งหมดEventLoopเพื่อให้สิ่งทั้งหมดถูกดำเนินการและเรียกวิธีการโทรกลับ? นี่คือสิ่งที่ฉันเข้าใจเมื่อพูดถึงฟังก์ชันการโทรกลับ: function downloadFile(filePath, callback) { blah.downloadFile(filePath); callback(); } …

11
เส้นทางที่ถูกต้องสำหรับ img บน React.js
ฉันมีปัญหากับภาพของฉันในโครงการตอบสนองของฉัน อันที่จริงฉันคิดเสมอว่าพา ธ สัมพัทธ์ไปยังแอตทริบิวต์ src ถูกสร้างขึ้นบนสถาปัตยกรรมไฟล์ นี่คือสถาปัตยกรรมไฟล์ของฉัน: components file1.jsx file2.jsx file3.jsx container img js ... อย่างไรก็ตามฉันตระหนักว่าเส้นทางถูกสร้างขึ้นบน url ในองค์ประกอบหนึ่งของฉัน (ตัวอย่างเช่นใน file1.jsx) ฉันมีสิ่งนี้: localhost/details/2 <img src="../img/myImage.png" /> -> works localhost/details/2/id <img src="../img/myImage.png" /> -> doesn't work, images are not displayed เป็นไปได้อย่างไรที่จะแก้ปัญหานี้? ฉันต้องการให้ในรูปแบบของเส้นทางใด ๆ ที่จัดการโดย react-router ภาพทั้งหมดสามารถแสดงด้วยเส้นทางเดียวกัน

9
วิธีแทรกแถวในเนื้อหาตาราง HTML ใน JavaScript
ฉันมีตาราง HTML ที่มีส่วนหัวและส่วนท้าย: <table id="myTable"> <thead> <tr> <th>My Header</th> </tr> </thead> <tbody> <tr> <td>aaaaa</td> </tr> </tbody> <tfoot> <tr> <td>My footer</td> </tr> <tfoot> </table> ฉันกำลังพยายามเพิ่มแถวtbodyด้วยสิ่งต่อไปนี้: myTable.insertRow(myTable.rows.length - 1); แต่มีการเพิ่มแถวในtfootส่วนนี้ ฉันจะแทรกได้tbodyอย่างไร?


6
ไม่สามารถใช้ forEach กับ Filelist
ฉันพยายามวนซ้ำFilelist: console.log('field:', field.photo.files) field.photo.files.forEach(file => { // looping code }) อย่างที่คุณเห็นfield.photo.filesมีFilelist: วิธีการวนซ้ำอย่างถูกต้องfield.photo.files?
135 javascript  file 

3
จะแมป / ลด / กรองชุดใน JavaScript ได้อย่างไร?
มีวิธีใดบ้างที่จะmap/ reduce/ filter/ etc a Setใน JavaScript หรือฉันจะต้องเขียนเอง? นี่คือส่วนSet.prototypeขยายที่เหมาะสม Set.prototype.map = function map(f) { var newSet = new Set(); for (var v of this.values()) newSet.add(f(v)); return newSet; }; Set.prototype.reduce = function(f,initial) { var result = initial; for (var v of this) result = f(result, v); return result; }; Set.prototype.filter = …

8
moment.js รูปแบบ 24 ชม
ฉันจะแสดงเวลาในรูปแบบ 24 ชั่วโมงแทน 12 ได้อย่างไร ฉันใช้ moment.js ฉันค่อนข้างมั่นใจว่าเส้นเหล่านี้น่าจะเกี่ยวข้องกับมัน meridiem : function (hours, minutes, isLower) { if (hours > 11) { return isLower ? 'pm' : 'PM'; } else { return isLower ? 'am' : 'AM'; } }, จะเปลี่ยนได้อย่างไร?

21
การเล่นวิดีโออัตโนมัติไม่ทำงานในเบราว์เซอร์เดสก์ท็อป Safari และ Chrome
ฉันใช้เวลาค่อนข้างมากในการพยายามหาสาเหตุว่าทำไมวิดีโอถึงฝังตัวอยู่ที่นี่: <video height="256" loop autoplay muted controls id="vid"> <source type="video/mp4" src="video_file.mp4"></source> <source type="video/ogg" src="video_file.ogg"></source> </video> เริ่มเล่นโดยอัตโนมัติเมื่อโหลดเพจใน FireFox แต่ไม่สามารถเล่นอัตโนมัติในเบราว์เซอร์ที่ใช้ Webkit สิ่งนี้เกิดขึ้นในบางเพจแบบสุ่มเท่านั้น จนถึงตอนนี้ฉันไม่สามารถหาสาเหตุได้ ฉันสงสัยว่ามีแท็กที่ไม่ได้ปิดหรือ JS ขนาดใหญ่ที่สร้างโดย CMS editors

22
react-router เลื่อนขึ้นไปด้านบนในทุกการเปลี่ยนแปลง
ฉันมีปัญหาเมื่อไปที่หน้าอื่นตำแหน่งของมันจะยังคงเหมือนหน้าก่อน ดังนั้นจะไม่เลื่อนขึ้นไปด้านบนโดยอัตโนมัติ ฉันพยายามใช้window.scrollTo(0, 0)กับonChangeเราเตอร์ด้วย ฉันเคยscrollBehaviorแก้ไขปัญหานี้ด้วย แต่ไม่ได้ผล ข้อเสนอแนะเกี่ยวกับเรื่องนี้หรือไม่?

8
NodeJS UnhandledPromise การปฏิเสธคำเตือน
ดังนั้นฉันกำลังทดสอบส่วนประกอบที่ต้องอาศัยตัวปล่อยเหตุการณ์ เมื่อต้องการทำเช่นนั้นฉันจึงหาวิธีแก้ปัญหาโดยใช้สัญญากับมอคค่า + ชัย: it('should transition with the correct event', (done) => { const cFSM = new CharacterFSM({}, emitter, transitions); let timeout = null; let resolved = false; new Promise((resolve, reject) => { emitter.once('action', resolve); emitter.emit('done', {}); timeout = setTimeout(() => { if (!resolved) { reject('Timedout!'); } clearTimeout(timeout); }, 100); …

7
สร้างไดเรกทอรีเมื่อเขียนไฟล์ใน Node.js
ฉันกำลังซ่อมแซม Node.js และพบปัญหาเล็กน้อย dataฉันมีสคริปต์ซึ่งอยู่ในไดเรกทอรีที่เรียกว่า ฉันต้องการให้สคริปต์เขียนข้อมูลบางอย่างไปยังไฟล์ในไดเรกทอรีย่อยภายในdataไดเรกทอรีย่อย อย่างไรก็ตามฉันได้รับข้อผิดพลาดต่อไปนี้: { [Error: ENOENT, open 'D:\data\tmp\test.txt'] errno: 34, code: 'ENOENT', path: 'D:\\data\\tmp\\test.txt' } รหัสดังต่อไปนี้: var fs = require('fs'); fs.writeFile("tmp/test.txt", "Hey there!", function(err) { if(err) { console.log(err); } else { console.log("The file was saved!"); } }); ใครสามารถช่วยฉันในการหาวิธีที่จะทำให้ Node.js สร้างโครงสร้างไดเรกทอรีถ้ามันไม่ออกจากการเขียนไปยังไฟล์?


14
ปรับขนาดกล่องโต้ตอบ jQuery UI โดยอัตโนมัติตามความกว้างของเนื้อหาที่โหลดโดย ajax
ฉันมีปัญหาในการค้นหาข้อมูลและตัวอย่างที่เฉพาะเจาะจงเกี่ยวกับเรื่องนี้ ฉันมีกล่องโต้ตอบ jQuery UI จำนวนหนึ่งในแอปพลิเคชันของฉันที่แนบมากับ div ที่โหลดด้วยการเรียก. jQuery () พวกเขาทั้งหมดใช้การเรียกการตั้งค่าเดียวกัน: $(".mydialog").dialog({ autoOpen: false, resizable: false, modal: true }); ฉันแค่อยากให้กล่องโต้ตอบปรับขนาดตามความกว้างของเนื้อหาที่โหลดมา ตอนนี้ความกว้างจะอยู่ที่ 300px (ค่าเริ่มต้น) และฉันจะได้แถบเลื่อนแนวนอน เท่าที่ฉันสามารถบอกได้ว่า "autoResize" ไม่ใช่ตัวเลือกสำหรับกล่องโต้ตอบอีกต่อไปและจะไม่มีอะไรเกิดขึ้นเมื่อฉันระบุ ฉันพยายามที่จะไม่เขียนฟังก์ชันแยกกันสำหรับแต่ละกล่องโต้ตอบดังนั้นจึง.dialog("option", "width", "500")ไม่ใช่ตัวเลือกจริงๆเนื่องจากแต่ละกล่องโต้ตอบจะมีความกว้างต่างกัน การระบุwidth: 'auto'ตัวเลือกไดอะล็อกทำให้ไดอะล็อกใช้เวลาถึง 100% ของความกว้างของหน้าต่างเบราว์เซอร์ ตัวเลือกของฉันคืออะไร? ฉันใช้ jQuery 1.4.1 กับ jQuery UI 1.8rc1 ดูเหมือนว่านี่น่าจะเป็นอะไรที่ง่ายจริงๆ แก้ไข: ฉันได้ใช้วิธีแก้ปัญหาสำหรับสิ่งนี้แล้ว แต่ฉันยังคงมองหาวิธีแก้ปัญหาที่ดีกว่า

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.