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

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

3
ไวยากรณ์การเรียกใช้ฟังก์ชันทันที
มีตัวเลือกJSLintซึ่งเป็นหนึ่งใน The Good Parts ที่ "[ต้อง] parens สำหรับการเรียกใช้ทันที" ซึ่งหมายความว่าการก่อสร้าง (function () { // ... })(); จะต้องเขียนเป็น (function () { // ... }()); คำถามของฉันคือ - ใครสามารถอธิบายได้ว่าเหตุใดรูปแบบที่สองนี้จึงถือว่าดีกว่า มีความยืดหยุ่นมากขึ้นหรือไม่? เกิดข้อผิดพลาดน้อยกว่า? รูปแบบแรกมีข้อดีอย่างไร? ตั้งแต่ถามคำถามนี้ฉันได้เข้าใจถึงความสำคัญของการมีความแตกต่างทางภาพที่ชัดเจนระหว่างค่าฟังก์ชันและค่าของฟังก์ชัน พิจารณากรณีที่ผลลัพธ์ของการเรียกใช้ทันทีอยู่ทางขวามือของนิพจน์การมอบหมาย: var someVar = (function () { // ... }()); แม้ว่าวงเล็บด้านนอกสุดจะไม่จำเป็นทางไวยากรณ์ แต่วงเล็บเปิดจะให้การบ่งชี้ล่วงหน้าว่าค่าที่กำหนดไม่ใช่ฟังก์ชันเอง แต่เป็นผลลัพธ์ของฟังก์ชันที่เรียกใช้ สิ่งนี้คล้ายกับคำแนะนำของ Crockford เกี่ยวกับการใช้ตัวพิมพ์ใหญ่ของฟังก์ชันตัวสร้าง - มีไว้เพื่อใช้เป็นสัญญาณภาพสำหรับทุกคนที่ดูซอร์สโค้ด

3
วิธีสกัดกั้นคำขอ AJAX ทั้งหมดที่สร้างโดยไลบรารี JS ต่างๆ
ฉันกำลังสร้างเว็บแอปที่มีไลบรารี JS ที่แตกต่างกัน (AngularJS, OpenLayers, ... ) และต้องการวิธีสกัดกั้นการตอบสนองของ AJAX ทั้งหมดเพื่อให้สามารถใช้งานได้ในกรณีที่เซสชันผู้ใช้ที่บันทึกไว้หมดอายุ (การตอบกลับกลับมาพร้อมกับ401 Unauthorizedสถานะ) เพื่อเปลี่ยนเส้นทางเขา ไปที่หน้าเข้าสู่ระบบ ฉันรู้ว่า AngularJS เสนอinterceptorsให้จัดการสถานการณ์ดังกล่าว แต่ไม่สามารถหาวิธีที่จะบรรลุการแทรกคำขอของ OpenLayers ได้ ดังนั้นฉันจึงเลือกใช้วิธี Vanilla JS ที่นี่ฉันพบโค้ดชิ้นนี้ ... (function(open) { XMLHttpRequest.prototype.open = function(method, url, async, user, pass) { this.addEventListener("readystatechange", function() { console.log(this.readyState); // this one I changed }, false); open.call(this, method, url, async, …

21
วิธีการเปลี่ยนตำแหน่งป๊อปอัปของตัวควบคุม jQuery DatePicker
มีความคิดอย่างไรที่จะทำให้ DatePicker ปรากฏที่ส่วนท้ายของกล่องข้อความที่เกี่ยวข้องแทนที่จะอยู่ด้านล่างโดยตรง สิ่งที่มีแนวโน้มที่จะเกิดขึ้นคือกล่องข้อความจะอยู่ที่ด้านล่างของหน้าและ DatePicker จะเลื่อนขึ้นเพื่อพิจารณาและครอบคลุมกล่องข้อความทั้งหมด หากผู้ใช้ต้องการพิมพ์วันที่แทนที่จะเลือกก็ทำไม่ได้ ฉันอยากให้มันปรากฏหลังกล่องข้อความดังนั้นมันไม่สำคัญว่ามันจะปรับแนวตั้งอย่างไร มีความคิดอย่างไรในการควบคุมตำแหน่ง? ฉันไม่เห็นการตั้งค่าใด ๆ สำหรับวิดเจ็ตและฉันไม่มีโชคในการปรับแต่งการตั้งค่า CSS แต่ฉันอาจพลาดบางอย่างได้อย่างง่ายดาย

18
ReCaptcha API v2 สไตล์
ฉันไม่ประสบความสำเร็จมากนักในการค้นหาวิธีการจัดรูปแบบ recaptcha ใหม่ของ Google (v2) เป้าหมายในที่สุดคือทำให้ตอบสนอง แต่ฉันมีปัญหาในการใช้การจัดแต่งทรงผมสำหรับสิ่งง่ายๆเช่นความกว้าง เอกสาร APIของพวกเขาดูเหมือนจะไม่ได้ให้รายละเอียดเกี่ยวกับวิธีการควบคุมรูปแบบใด ๆ เลยนอกจากพารามิเตอร์ธีมและโซลูชัน CSS และ JavaScript แบบธรรมดาก็ไม่ได้ผลสำหรับฉัน โดยพื้นฐานแล้วฉันต้องสามารถใช้ CSS กับ reCaptcha เวอร์ชันใหม่ของ Google ได้ การใช้ JavaScript ร่วมกับมันเป็นสิ่งที่ยอมรับได้

9
ฉันจะส่งคืนการตอบสนองจากการเรียก Observable / http / async ในเชิงมุมได้อย่างไร
ฉันมีบริการที่ส่งคืนค่าที่สังเกตได้ซึ่งส่งคำขอ http ไปยังเซิร์ฟเวอร์ของฉันและรับข้อมูล ฉันต้องการที่จะใช้ข้อมูลนี้ undefinedแต่ฉันมักจะจบลงด้วยการ มีปัญหาอะไร? บริการ : @Injectable() export class EventService { constructor(private http: Http) { } getEventList(): Observable<any>{ let headers = new Headers({ 'Content-Type': 'application/json' }); let options = new RequestOptions({ headers: headers }); return this.http.get("http://localhost:9999/events/get", options) .map((res)=> res.json()) .catch((err)=> err) } } ส่วนประกอบ: @Component({...}) export class EventComponent …

5
Javascript สำหรับ“ เพิ่มในหน้าจอหลัก” บน iPhone?
เป็นไปได้ไหมที่จะใช้ Javascript เพื่อเลียนแบบตัวเลือกเพิ่มในหน้าจอหลักในเมนูบุ๊กมาร์กของ Mobile Safari สิ่งที่คล้ายกับ IE window.external.AddFavorite(location.href, document.title);อาจเป็นไปได้?

7
แนวทางปฏิบัติที่ดีที่สุดสำหรับการฝัง JSON โดยพลการใน DOM?
ฉันกำลังคิดเกี่ยวกับการฝัง JSON โดยพลการใน DOM ดังนี้: <script type="application/json" id="stuff"> { "unicorns": "awesome", "abc": [1, 2, 3] } </script> ซึ่งคล้ายกับวิธีที่เราอาจจัดเก็บเทมเพลต HTML ที่กำหนดเองใน DOM เพื่อใช้กับเอ็นจินเทมเพลต JavaScript ในภายหลัง ในกรณีนี้เราสามารถดึง JSON และแยกวิเคราะห์ได้ในภายหลังด้วย: var stuff = JSON.parse(document.getElementById('stuff').innerHTML); วิธีนี้ได้ผลแต่เป็นวิธีที่ดีที่สุดหรือไม่? สิ่งนี้ละเมิดแนวทางปฏิบัติหรือมาตรฐานที่ดีที่สุดหรือไม่ หมายเหตุ: ฉันไม่ได้มองหาทางเลือกอื่นในการจัดเก็บ JSON ใน DOM ฉันตัดสินใจแล้วว่าเป็นทางออกที่ดีที่สุดสำหรับปัญหาเฉพาะที่ฉันมี ฉันแค่มองหาวิธีที่ดีที่สุดที่จะทำ

2
แนวทางปฏิบัติที่ดีที่สุดในการจัดระเบียบไลบรารี Javascript และโครงสร้างโฟลเดอร์ CSS [ปิด]
ปิด . คำถามนี้เป็นคำถามความคิดเห็นตาม ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบได้ด้วยข้อเท็จจริงและการอ้างอิงโดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา ปรับปรุงคำถามนี้ คุณจัดระเบียบโฟลเดอร์ js & css ในเว็บแอปพลิเคชันของคุณอย่างไร? โครงสร้างโครงการปัจจุบันของฉันเป็นแบบนี้: root/ ├── assets/ │ ├── js/ │ │ └──lib/ │ ├── css/ │ └── img/ └── index.html แต่มันซับซ้อนกว่าเมื่อฉันใช้ไลบรารี javascript & ปลั๊กอิน css จำนวนมาก ปลั๊กอิน Javascript มาพร้อมกับไฟล์. js ของตัวเองและบางครั้งก็มีไฟล์. css ของตัวเอง ตัวอย่างเช่นเมื่อฉันใช้ JQuery กับปลั๊กอิน JQueryUI ฉันใส่ …

15
Chrome ไม่สามารถโหลดผู้ปฏิบัติงานบนเว็บ
ฉันกำลังทำงานในโครงการที่ใช้ผู้ปฏิบัติงานบนเว็บ ในส่วนหัวของฉันฉันมีรหัสนี้: var worker = new Worker("worker.js"); // More code สิ่งนี้ใช้ได้ดีใน Safari แต่ Chrome รายงานข้อผิดพลาดต่อไปนี้: Uncaught SecurityError: Failed to create a worker: script at '(path)/worker.js' cannot be accessed from origin 'null'. เหตุใดสิ่งนี้จึงทำงานได้อย่างสมบูรณ์ใน Safari แต่ไม่ใช่ Chrome ฉันจะแก้ไขปัญหานี้ได้อย่างไร ขอบคุณ.

6
จะต่อสู้กับตัวแปรที่ไม่ได้รับการแก้ไขจำนวนมากที่เตือนใน Webstorm ได้อย่างไร
ฉันมีฟังก์ชันที่รับข้อมูลจากเซิร์ฟเวอร์: function getData(data){ console.log(data.someVar); } Webstorm กล่าวว่าsomeVar- เป็นตัวแปรที่ไม่ได้รับการแก้ไข ฉันจะกำจัดคำเตือนดังกล่าวได้อย่างไร? ฉันเห็นหลายตัวเลือก: ระงับคำเตือนในการตั้งค่า ide; เพิ่มไฟล์ซอร์ส json พร้อมฟิลด์ ( รายละเอียด ); ใช้ไวยากรณ์เหมือนอาร์เรย์: data['some_unres_var']; นอกจากนี้ Webstorm ยังเสนอให้ฉันสร้างเนมสเปซสำหรับ "ข้อมูล" (เพิ่มคำอธิบายประกอบเช่น/** @namespace data.some_unres_var*/) สร้างฟิลด์ดังกล่าวหรือเปลี่ยนชื่อ

8
ผนวกอาร์เรย์เข้ากับ FormData และส่งผ่าน AJAX
ฉันใช้ ajax เพื่อส่งแบบฟอร์มหลายส่วนพร้อมอาร์เรย์ช่องข้อความและไฟล์ ฉันผนวกแต่ละ VAR เข้ากับข้อมูลหลักตามนั้น var attachments = document.getElementById('files'); var data= new FormData(); for (i=0; i< attachments.files.length; i++){ data.append('file', attachments.files[i]); console.log(attachments.files[i]); data.append ('headline', headline); data.append ('article', article); data.append ('arr', arr); data.append ('tag', tag); จากนั้นฉันใช้ฟังก์ชัน ajax เพื่อส่งไปยังไฟล์ PHP เพื่อเก็บไว้ใน sql DB $.ajax({ type: "post", url: 'php/submittionform.php', cache: false, processData: false, …


5
มีวิธีสร้างอินเทอร์เฟซใน ES6 / Node 4 หรือไม่?
ES6 มีให้ใช้งานอย่างสมบูรณ์ในโหนด 4 ฉันสงสัยว่ามันมีแนวคิดของอินเทอร์เฟซเพื่อกำหนดสัญญาวิธีการMyClass implements MyInterfaceหรือไม่ ฉันหาข้อมูลเกี่ยวกับ Googling ไม่ได้มากนัก แต่อาจมีเคล็ดลับหรือวิธีแก้ปัญหาที่ดี

21
ค้นหาป้ายกำกับ html ที่เกี่ยวข้องกับอินพุตที่ระบุ
สมมติว่าฉันมีแบบฟอร์ม html อินพุต / เลือก / textarea แต่ละรายการจะมีความสอดคล้อง<label>กับforแอตทริบิวต์ที่ตั้งค่าเป็น id ของสหาย ในกรณีนี้ฉันรู้ว่าอินพุตแต่ละรายการจะมีป้ายกำกับเดียวเท่านั้น ระบุองค์ประกอบอินพุตในจาวาสคริปต์ - ผ่านเหตุการณ์ onkeyup ตัวอย่างเช่นวิธีใดที่ดีที่สุดในการค้นหาป้ายกำกับที่เกี่ยวข้อง
110 javascript  html  label 

7
$ .when.apply ($, someArray) ทำอะไร?
ฉันอ่านเกี่ยวกับ Deferreds และสัญญา$.when.apply($, someArray)และให้มาข้าม ฉันไม่ชัดเจนเล็กน้อยว่าสิ่งนี้ทำอะไรได้บ้างโดยกำลังมองหาคำอธิบายว่าหนึ่งบรรทัดทำงานได้ตรงกันทั้งหมด (ไม่ใช่ข้อมูลโค้ดทั้งหมด) นี่คือบริบทบางส่วน: var data = [1,2,3,4]; // the ids coming back from serviceA var processItemsDeferred = []; for(var i = 0; i < data.length; i++){ processItemsDeferred.push(processItem(data[i])); } $.when.apply($, processItemsDeferred).then(everythingDone); function processItem(data) { var dfd = $.Deferred(); console.log('called processItem'); //in the real world, this would probably …

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