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

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

5
ฉันจะเพิ่มสคริปต์ที่กำหนดเองไปยังไฟล์ package.json ของฉันที่เรียกใช้ไฟล์จาวาสคริปต์ได้อย่างไร
ฉันต้องการที่จะสามารถที่จะดำเนินการคำสั่งในไดเรกทอรีโครงการที่จะทำงานscript1node script1.js script1.jsเป็นไฟล์ในไดเรกทอรีเดียวกัน คำสั่งจะต้องเฉพาะเจาะจงไปที่ไดเรกทอรีโครงการซึ่งหมายความว่าถ้าฉันส่งโฟลเดอร์โครงการอื่นให้พวกเขาจะสามารถเรียกใช้คำสั่งเดียวกันได้ จนถึงตอนนี้ฉันได้ลองเพิ่ม: "scripts": { "script1": "node script1.js" } ไปยังไฟล์ package.json ของฉัน แต่เมื่อฉันลองเรียกใช้script1ฉันจะได้ผลลัพธ์ต่อไปนี้: zsh: command not found: script1 ไม่มีใครรู้ขั้นตอนที่จำเป็นในการเพิ่มสคริปต์ดังกล่าวข้างต้นไปยังโฟลเดอร์โครงการหรือไม่ * หมายเหตุ: ไม่สามารถเพิ่มคำสั่งในโปรไฟล์ทุบตี (ไม่สามารถเป็นคำสั่งเฉพาะเครื่อง) โปรดแจ้งให้เราทราบหากคุณต้องการคำชี้แจงใด ๆ

10
การสื่อสารระหว่างแท็บหรือหน้าต่าง
ฉันค้นหาวิธีการสื่อสารระหว่างหลายแท็บหรือหลายหน้าต่างในเบราว์เซอร์ (ในโดเมนเดียวกันไม่ใช่ CORS) โดยไม่ทิ้งร่องรอย มีวิธีแก้ปัญหาหลายประการ: ใช้วัตถุหน้าต่าง postMessage คุ้กกี้ localStorage ข้อแรกน่าจะเป็นทางออกที่แย่ที่สุด - คุณต้องเปิดหน้าต่างจากหน้าต่างปัจจุบันของคุณจากนั้นคุณสามารถสื่อสารได้ตราบใดที่คุณเปิดหน้าต่างค้างไว้ หากคุณโหลดหน้านี้ซ้ำในหน้าต่างใด ๆ คุณอาจสูญเสียการสื่อสารได้ วิธีที่สองโดยใช้ postMessage อาจเปิดใช้การสื่อสารข้ามจุดกำเนิด แต่เกิดปัญหาเช่นเดียวกับวิธีแรก คุณต้องบำรุงรักษาวัตถุหน้าต่าง วิธีที่สามใช้คุกกี้เก็บข้อมูลบางอย่างในเบราว์เซอร์ซึ่งดูเหมือนว่าสามารถส่งข้อความไปยัง windows ทั้งหมดในโดเมนเดียวกันได้อย่างมีประสิทธิภาพ แต่ปัญหาคือคุณไม่สามารถรู้ได้เลยว่าแท็บทั้งหมดอ่าน "ข้อความ" แล้วหรือไม่มาก่อน การทำความสะอาด. คุณต้องใช้การหมดเวลาบางประเภทเพื่ออ่านคุกกี้เป็นระยะ นอกจากนี้คุณถูก จำกัด ด้วยความยาวคุกกี้สูงสุดซึ่งก็คือ 4KB วิธีที่สี่โดยใช้ localStorage ดูเหมือนจะเอาชนะข้อ จำกัด ของคุกกี้และสามารถฟังได้โดยใช้เหตุการณ์ วิธีใช้มันถูกอธิบายไว้ในคำตอบที่ยอมรับแล้ว แก้ไข 2018: คำตอบที่ได้รับการยอมรับยังคงใช้ได้ แต่มีวิธีแก้ปัญหาที่ใหม่กว่าสำหรับเบราว์เซอร์สมัยใหม่เพื่อใช้ BroadcastChannel ดูคำตอบอื่น ๆ สำหรับตัวอย่างง่ายๆที่อธิบายวิธีการส่งข้อความระหว่างแท็บโดยง่ายโดยใช้ BroadcastChannel

6
แยกสตริงวันที่กับ moment.js
ฉันต้องการแยกสตริงต่อไปนี้ด้วย moment.js 2014-02-27T10: 00: 00และวันที่ส่งออกเดือนปี (14 มีนาคม 2014) ฉันได้อ่านเอกสาร แต่ไม่ประสบความสำเร็จ http://momentjs.com/docs/# / แยก / ตอน /

13
จะใช้ componentWillMount () ใน React Hooks ได้อย่างไร?
ในเอกสารทางการของ React ที่กล่าวถึง - หากคุณคุ้นเคยกับวิธีวงจรชีวิตของคลาส React คุณสามารถคิดถึง useEffect Hook เป็น componentDidMount, componentDidUpdate และ componentWillUnmount รวมกัน คำถามของฉันคือ - เราจะใช้componentWillMount()วิธี lifecyle ในเบ็ดได้อย่างไร

16
การแปลงวัตถุ JavaScript ด้วยปุ่มตัวเลขให้เป็นอาร์เรย์
ฉันมีวัตถุแบบนี้กลับมาเป็นการตอบสนอง JSON จากเซิร์ฟเวอร์: {"0":"1","1":"2","2":"3","3":"4"} ฉันต้องการแปลงเป็นอาร์เรย์ JavaScript เช่นนี้ ["1","2","3","4"] มีวิธีที่ดีที่สุดในการทำเช่นนี้? ทุกที่ที่ฉันอ่านผู้คนกำลังใช้ตรรกะที่ซับซ้อนโดยใช้ลูป ดังนั้นมีวิธีการอื่นในการทำเช่นนี้?

10
ฉันสามารถโทร jquery click () เพื่อติดตามลิงก์ <a> ได้หรือไม่หากฉันไม่ได้ผูกตัวจัดการเหตุการณ์ไว้ด้วยการผูกหรือคลิกแล้ว
ฉันมีตัวจับเวลาใน JavaScript ของฉันซึ่งจำเป็นต้องเลียนแบบการคลิกลิงก์เพื่อไปยังหน้าอื่นเมื่อเวลาผ่านไป เมื่อต้องการทำสิ่งนี้ฉันใช้click()ฟังก์ชันของ jQuery ฉันได้ใช้$().trigger()และwindow.locationยังและฉันสามารถทำให้มันทำงานตามที่ตั้งใจไว้กับทั้งสาม ฉันสังเกตเห็นพฤติกรรมแปลก ๆ ด้วยclick()และฉันพยายามที่จะเข้าใจว่าเกิดอะไรขึ้นและทำไม ฉันใช้ Firefox สำหรับทุกสิ่งที่ฉันอธิบายในคำถามนี้ แต่ฉันก็สนใจในสิ่งที่เบราว์เซอร์อื่นจะทำกับสิ่งนี้ หากฉันไม่ได้ใช้$('a').bind('click',fn)หรือ$('a').click(fn)ตั้งค่าตัวจัดการเหตุการณ์การโทร$('a').click()ดูเหมือนจะไม่ทำอะไรเลย ไม่เรียกตัวจัดการเริ่มต้นของเบราว์เซอร์สำหรับเหตุการณ์นี้เนื่องจากเบราว์เซอร์ไม่โหลดหน้าใหม่ อย่างไรก็ตามถ้าฉันตั้งค่าตัวจัดการเหตุการณ์ก่อนมันก็ใช้ได้ตามที่คาดไว้แม้ว่าตัวจัดการเหตุการณ์จะไม่ทำอะไรเลย $('a').click(function(){return true;}).click(); สิ่งนี้จะโหลดหน้าใหม่ราวกับว่าฉันคลิกตัวเอง ดังนั้นคำถามของฉันคือทวีคูณ: นี่เป็นพฤติกรรมแปลก ๆ เพราะฉันทำอะไรผิดไปหรือเปล่า? และทำไมการโทรถึงไม่click()ทำอะไรเลยกับพฤติกรรมเริ่มต้นหากฉันไม่ได้สร้างตัวจัดการเอง แก้ไข: ตามที่ฮอฟแมนกำหนดเมื่อเขาพยายามทำซ้ำผลลัพธ์ของฉันผลลัพธ์ที่ฉันอธิบายไว้ข้างต้นจะไม่เกิดขึ้นจริง ฉันไม่แน่ใจว่าสิ่งที่ทำให้เกิดเหตุการณ์ที่ฉันสังเกตเห็นเมื่อวานนี้ แต่ฉันมั่นใจในวันนี้ว่ามันไม่ใช่สิ่งที่ฉันอธิบายในคำถาม ดังนั้นคำตอบคือคุณไม่สามารถคลิก "ปลอม" ในเบราว์เซอร์ได้และ jQuery ทั้งหมดจะเรียกใช้ตัวจัดการเหตุการณ์ของคุณ คุณยังคงสามารถใช้window.locationเพื่อเปลี่ยนหน้าและทำงานได้ดีสำหรับฉัน

17
ป้อนตัวยึดตำแหน่งสำหรับ Internet Explorer
HTML5 แนะนำplaceholderคุณสมบัติในinputองค์ประกอบซึ่งช่วยให้สามารถแสดงข้อความเริ่มต้นเป็นสีเทา น่าเศร้าที่ Internet Explorer รวมถึง IE 9 ไม่รองรับ มีสคริปต์ตัวยึดตำแหน่งบางตัวอยู่แล้ว พวกเขามักจะทำงานโดยการใส่ข้อความเริ่มต้นในช่องใส่ให้เป็นสีเทาและลบมันอีกครั้งทันทีที่คุณมุ่งเน้นช่องใส่ ข้อเสียเปรียบของวิธีนี้คือข้อความตัวยึดอยู่ในช่องใส่ ดังนั้น: สคริปต์ไม่สามารถตรวจสอบได้ง่ายว่าฟิลด์อินพุตว่างหรือไม่ การประมวลผลด้านเซิร์ฟเวอร์ต้องตรวจสอบกับค่าเริ่มต้นเพื่อไม่ให้แทรกตัวยึดตำแหน่งลงในฐานข้อมูล ฉันต้องการโซลูชันที่ข้อความตัวยึดไม่ได้อยู่ในอินพุต


17
RegEx เพื่อแยกการแข่งขันทั้งหมดจากสตริงโดยใช้ RegExp.exec
ฉันพยายามแยกสตริงประเภทต่อไปนี้: [key:"val" key2:"val2"] โดยที่มีคีย์ที่กำหนดเอง: "val" จับคู่อยู่ภายใน ฉันต้องการคว้าชื่อคีย์และค่า สำหรับผู้ที่อยากรู้อยากเห็นฉันพยายามที่จะแยกรูปแบบฐานข้อมูลของนักรบงาน นี่คือสตริงทดสอบของฉัน: [description:"aoeu" uuid:"123sth"] ซึ่งมีวัตถุประสงค์เพื่อเน้นว่าสิ่งใดก็ตามที่สามารถอยู่ในคีย์หรือค่านอกเหนือจากช่องว่างไม่มีช่องว่างรอบโคลอนและค่าอยู่ในเครื่องหมายคำพูดคู่เสมอ ในโหนดนี่คือผลลัพธ์ของฉัน: [deuteronomy][gatlin][~]$ node &gt; var re = /^\[(?:(.+?):"(.+?)"\s*)+\]$/g &gt; re.exec('[description:"aoeu" uuid:"123sth"]'); [ '[description:"aoeu" uuid:"123sth"]', 'uuid', '123sth', index: 0, input: '[description:"aoeu" uuid:"123sth"]' ] แต่description:"aoeu"ยังตรงกับรูปแบบนี้ ฉันจะกลับมาแข่งขันทั้งหมดได้อย่างไร?

9
จะเปลี่ยนข้อความของฉลากได้อย่างไร?
ฉันมีรายการวิทยุกระจายเสียงและเมื่อคลิกที่รายการปุ่มตัวเลือกฉันต้องเปลี่ยนข้อความของฉลาก แต่ด้วยเหตุผลบางอย่างมันไม่ทำงาน รหัสด้านล่าง: &lt;asp:Label ID="lblVessel" Text="Vessel:" runat="server"&gt;&lt;/asp:Label&gt; &lt;script language="javascript"&gt; $(document).ready(function() { $('#rblDiv input').click(function() { var selected = $("#rblDiv input:radio:checked").val(); if (selected == "exportpack") { $('#lblVessel').text("NewText"); } }); }); &lt;/script&gt;

12
จะเข้าถึงเนื้อหาคำขอเมื่อ POSTing โดยใช้ Node.js และ Express ได้อย่างไร
ฉันมีรหัส Node.js ต่อไปนี้: var express = require('express'); var app = express.createServer(express.logger()); app.use(express.bodyParser()); app.post('/', function(request, response) { response.write(request.body.user); response.end(); }); ตอนนี้ถ้าฉันโพสต์สิ่งที่ชอบ: curl -d user=Someone -H Accept:application/json --url http://localhost:5000 ฉันได้รับSomeoneตามที่คาดไว้ ตอนนี้ถ้าฉันต้องการได้รับร่างกายเต็มร้องขอ? ฉันพยายามทำresponse.write(request.body)แต่ Node.js เกิดข้อยกเว้นว่า " อาร์กิวเมนต์แรกต้องเป็นสตริงหรือบัฟเฟอร์ " จากนั้นไปที่ "infinite loop" โดยมีข้อยกเว้นที่ระบุว่า " ไม่สามารถตั้งค่าส่วนหัวได้หลังจากถูกส่ง "; นี้แม้จะยังเป็นความจริงถ้าฉันไม่แล้วเขียนvar reqBody = request.body;response.write(reqBody) มีปัญหาอะไรที่นี่ นอกจากนี้ฉันสามารถรับคำขอแบบดิบโดยexpress.bodyParser()ไม่ใช้ได้หรือไม่

8
TypeError: Router.use () ต้องการฟังก์ชั่นมิดเดิลแวร์ แต่มี Object
มีการเปลี่ยนแปลงมิดเดิลแวร์ในการแสดง Express เวอร์ชันใหม่และฉันได้ทำการเปลี่ยนแปลงบางอย่างในโค้ดของฉันเกี่ยวกับการโพสต์อื่น ๆ ในปัญหานี้ แต่ฉันไม่สามารถติดอะไรได้เลย เราให้มันทำงานก่อนมือ แต่ฉันจำไม่ได้ว่าการเปลี่ยนแปลงคืออะไร throw new TypeError('Router.use() requires middleware function but got a ^ TypeError: Router.use() requires middleware function but got a Object node ./bin/www js-bson: Failed to load c++ bson extension, using pure JS version js-bson: Failed to load c++ bson extension, using pure JS …

6
การส่งตัวเลขไปยังสตริงใน TypeScript
วิธีใดที่ดีที่สุด (ถ้ามี) ที่จะส่งจากหมายเลขหนึ่งไปอีกสตริงใน typescript var page_number:number = 3; window.location.hash = page_number; ในกรณีนี้คอมไพเลอร์จะพ่นข้อผิดพลาด: Type 'number' ไม่สามารถกำหนดให้พิมพ์ 'string' เพราะlocation.hashเป็นสตริง window.location.hash = ""+page_number; //casting using "" literal window.location.hash = String(number); //casting creating using the String() function แล้ววิธีไหนดีกว่ากัน?

10
วิธีจับภาพหน้าจอของ div ด้วย JavaScript
ฉันกำลังสร้างสิ่งที่เรียกว่า "แบบทดสอบ HTML" มันรันบน JavaScript อย่างสมบูรณ์และมันก็ค่อนข้างเท่ห์ ในตอนท้ายกล่องผลลัพธ์จะปรากฏขึ้นที่ระบุว่า "Your Results:" และมันแสดงให้เห็นว่าพวกเขาใช้เวลานานเท่าไหร่เปอร์เซ็นต์ที่พวกเขาได้รับและจำนวนคำถามที่พวกเขาได้รับทันทีจาก 10 ฉันอยากจะมีปุ่มที่บอกว่า "บันทึกผลลัพธ์" แล้วให้จับภาพหน้าจอหรืออะไรก็ได้ของ div แล้วแสดงภาพที่จับบนหน้าเว็บที่พวกเขาสามารถคลิกขวาและ "บันทึกภาพเป็น" ฉันชอบที่จะทำสิ่งนี้เพื่อให้พวกเขาสามารถแบ่งปันผลลัพธ์กับผู้อื่นได้ ฉันไม่ต้องการให้พวกเขา "คัดลอก" ผลลัพธ์เพราะพวกเขาสามารถเปลี่ยนแปลงได้อย่างง่ายดาย หากพวกเขาเปลี่ยนสิ่งที่พูดในภาพก็โอเค ไม่มีใครรู้วิธีการทำเช่นนี้หรือสิ่งที่คล้ายกัน?
175 javascript  jquery  html 

28
ข้อผิดพลาด FATAL: มาร์ค - คอมแพ็คที่ไม่มีประสิทธิภาพใกล้ขีด จำกัด ฮีปการจัดสรรล้มเหลว - ฮีป JavaScript ไม่อยู่ในหน่วยความจำในไอออนิก 3
เมื่อฉันเรียกใช้โครงการไอออนิก 3 โดยใช้คำสั่ง "ไอออนิกให้บริการ" กว่าจะได้รับข้อผิดพลาดนี้:

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