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

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

12
ฉันจะแปลงรูปภาพเป็นสตริง Base64 โดยใช้ JavaScript ได้อย่างไร
ฉันต้องแปลงภาพเป็นสตริง Base64 เพื่อที่ฉันจะสามารถส่งภาพไปยังเซิร์ฟเวอร์ได้ มีไฟล์ JavaScript สำหรับสิ่งนี้หรือไม่? อื่น ๆ ฉันจะแปลงเป็นอย่างไร
500 javascript  base64 

23
จะตรวจสอบตัวแปรที่ไม่ได้กำหนดหรือเป็นโมฆะใน JavaScript ได้อย่างไร?
เรามักจะใช้รูปแบบรหัสต่อไปนี้ในรหัส JavaScript ของเรา if (typeof(some_variable) != 'undefined' && some_variable != null) { // Do something with some_variable } มีวิธีตรวจสอบที่ละเอียดน้อยลงซึ่งมีผลเหมือนกันหรือไม่? ตามฟอรัมและวรรณคดีบางเรื่องที่บอกว่าสิ่งต่อไปนี้ควรมีผลเช่นเดียวกัน if (some_variable) { // Do something with some_variable } แต่น่าเสียดายที่Firebugประเมินข้อความดังกล่าวว่าเป็นข้อผิดพลาดบนรันไทม์เมื่อsome_variableไม่ได้กำหนดในขณะที่ประโยคแรกนั้นใช้ได้สำหรับมัน นี่เป็นเพียงพฤติกรรมที่ไม่พึงประสงค์ของ Firebug หรือมีความแตกต่างระหว่างสองวิธีจริงหรือ

4
JavaScript: Class.method vs. Class.prototype.method
ข้อแตกต่างระหว่างสองข้อความต่อไปนี้คืออะไร? Class.method = function () { /* code */ } Class.prototype.method = function () { /* code using this.values */ } มันจะโอเคที่จะคิดว่าคำสั่งแรกเป็นการประกาศของวิธีการแบบคงที่และคำสั่งที่สองเป็นการประกาศของวิธีการอินสแตนซ์?

4
ความแตกต่างระหว่างการเขียนโปรแกรมฝั่งไคลเอ็นต์และฝั่งเซิร์ฟเวอร์คืออะไร?
ฉันมีรหัสนี้: <script type="text/javascript"> var foo = 'bar'; <?php file_put_contents('foo.txt', ' + foo + '); ?> var baz = <?php echo 42; ?>; alert(baz); </script> เหตุใดสิ่งนี้จึงไม่เขียน "บาร์" ลงในไฟล์ข้อความของฉัน แต่เตือน "42" หมายเหตุ: การแก้ไขก่อนหน้านี้ของคำถามนี้ชัดเจนเกี่ยวกับ PHP บนเซิร์ฟเวอร์และ JavaScript บนไคลเอนต์ ลักษณะสำคัญของปัญหาและแนวทางแก้ไขจะเหมือนกันสำหรับคู่ภาษาใด ๆเมื่อมีคนหนึ่งกำลังทำงานบนไคลเอนต์และอีกคนบนเซิร์ฟเวอร์ (แม้ว่าพวกเขาจะเป็นภาษาเดียวกัน) โปรดนำสิ่งนี้ไปยังบัญชีเมื่อคุณเห็นคำตอบที่พูดถึงภาษาเฉพาะ

5
วิธีการโคลนวัตถุวันที่
การกำหนดDateตัวแปรให้กับอีกตัวแปรหนึ่งจะเป็นการคัดลอกการอ้างอิงไปยังอินสแตนซ์เดียวกัน ซึ่งหมายความว่าการเปลี่ยนจะเปลี่ยนอีกอัน ฉันจะโคลนหรือคัดลอกDateอินสแตนซ์จริงได้อย่างไร
498 javascript 

20
การปรับขนาด iframe ตามเนื้อหา
ฉันกำลังทำงานกับแอปพลิเคชันที่คล้ายกับ iGoogle เนื้อหาจากแอปพลิเคชันอื่น (ในโดเมนอื่น) จะแสดงขึ้นโดยใช้ iframes ฉันจะปรับขนาด iframe ให้พอดีกับความสูงของเนื้อหา iframes ได้อย่างไร ฉันพยายามถอดรหัส javascript ที่ Google ใช้ แต่มันทำให้งงงวยและการค้นหาเว็บยังไม่เป็นผลดี อัปเดต:โปรดทราบว่าเนื้อหาถูกโหลดจากโดเมนอื่นดังนั้นจึงมีการนำนโยบายต้นกำเนิดเดียวกันมาใช้

6
ไวยากรณ์สำหรับฟังก์ชั่นลูกศร async
ฉันสามารถทำเครื่องหมายฟังก์ชันจาวาสคริปต์เป็น "async" (เช่นคืนสัญญา) ด้วยasyncคำหลัก แบบนี้: async function foo() { // do something } ไวยากรณ์เทียบเท่าสำหรับฟังก์ชั่นลูกศรคืออะไร

30
ดำเนินการ debounce ใน React.js
คุณจะทำการ debounce ใน React.js ได้อย่างไร ฉันต้องการ debounce handleOnChange ฉันลองด้วยdebounce(this.handleOnChange, 200)แต่ใช้ไม่ได้ function debounce(fn, delay) { var timer = null; return function() { var context = this, args = arguments; clearTimeout(timer); timer = setTimeout(function() { fn.apply(context, args); }, delay); }; } var SearchBox = React.createClass({ render: function() { return <input type="search" name="p" …

11
Javascript / Chrome - วิธีคัดลอกวัตถุจากผู้ตรวจสอบ webkit เป็นรหัส
ฉันกำลังทำคำสั่ง console.log ในจาวาสคริปต์ของฉันเพื่อบันทึกวัตถุจาวาสคริปต์ ฉันสงสัยว่ามีวิธีเมื่อเสร็จแล้ว - เพื่อคัดลอกวัตถุนั้นเป็นรหัสจาวาสคริปต์ สิ่งที่ฉันพยายามจะทำคือแปลงวัตถุที่สร้างขึ้นโดยใช้ ajax เพื่อแยกวิเคราะห์ฟีด xml เป็นวัตถุจาวาสคริปต์แบบคงที่เพื่อให้ไฟล์สามารถทำงานในเครื่องโดยไม่ต้องใช้เซิร์ฟเวอร์ ฉันได้รวมภาพหน้าจอของวัตถุในหน้าต่างตัวตรวจสอบ Chrome เพื่อให้คุณสามารถดูสิ่งที่ฉันพยายามทำ

14
ทางเลือกตัวแปรคลาส ES6
ปัจจุบันใน ES5 พวกเราหลายคนกำลังใช้รูปแบบต่อไปนี้ในกรอบงานเพื่อสร้างคลาสและตัวแปรคลาสซึ่งสะดวกสบาย: // ES 5 FrameWork.Class({ variable: 'string', variable2: true, init: function(){ }, addItem: function(){ } }); ใน ES6 คุณสามารถสร้างคลาสได้ แต่ไม่มีตัวเลือกให้มีคลาสตัวแปร: // ES6 class MyClass { const MY_CONST = 'string'; // <-- this is not possible in ES6 constructor(){ this.MY_CONST; } } น่าเสียดายที่ข้อความข้างต้นใช้งานไม่ได้เนื่องจากคลาสเท่านั้นที่สามารถมีวิธีได้ ฉันเข้าใจว่าฉันสามารถthis.myVar = trueในconstructor... แต่ฉันไม่ต้องการที่จะ 'ขยะ' คอนสตรัคของฉันโดยเฉพาะอย่างยิ่งเมื่อฉันมี …

11
typeof! ==“ undefined” กับ! = null
ฉันมักจะเห็นรหัส JavaScript ซึ่งตรวจสอบพารามิเตอร์ที่ไม่ได้กำหนด ฯลฯ ด้วยวิธีนี้: if (typeof input !== "undefined") { // do stuff } ดูเหมือนว่าสิ้นเปลืองเนื่องจากเกี่ยวข้องกับการค้นหาทั้งประเภทและการเปรียบเทียบสตริงไม่ต้องพูดถึงคำฟุ่มเฟื่อย มันจำเป็นเพราะundefinedสามารถเปลี่ยนชื่อได้ คำถามของฉันคือ: รหัสนั้นดีกว่าวิธีนี้ได้อย่างไร: if (null != input) { // do stuff } เท่าที่ฉันรู้คุณไม่สามารถกำหนดใหม่nullดังนั้นมันจะไม่ผิดพลาดอย่างกะทันหัน และเนื่องจากการขู่เข็ญชนิดของ!=โอเปอเรเตอร์การตรวจสอบนี้สำหรับทั้งสองundefinedและnull... ซึ่งมักจะเป็นสิ่งที่คุณต้องการอย่างแน่นอน (เช่นสำหรับพารามิเตอร์ฟังก์ชั่นเสริม) ทว่ารูปแบบนี้ยังไม่แพร่หลายและทำให้ JSLint ตะโกนใส่คุณเพื่อใช้ตัว!=ดำเนินการร้าย ทำไมสิ่งนี้จึงถือว่าเป็นรูปแบบที่ไม่ดี

8
จะเขียนแบบทดสอบที่คาดว่าจะเกิดข้อผิดพลาดในจัสมินได้อย่างไร?
ฉันพยายามเขียนการทดสอบสำหรับกรอบการทดสอบจัสมินซึ่งคาดว่าจะเกิดข้อผิดพลาด ในขณะที่ฉันใช้บูรณาจัสมิน Node.js จาก GitHub ในโมดูลโหนดของฉันฉันมีรหัสต่อไปนี้: throw new Error("Parsing is not possible"); ตอนนี้ฉันพยายามเขียนการทดสอบที่คาดว่าจะเกิดข้อผิดพลาดนี้: describe('my suite...', function() { [..] it('should not parse foo', function() { [..] expect(parser.parse(raw)).toThrow(new Error("Parsing is not possible")); }); }); ฉันพยายามError()และตัวแปรอื่น ๆ และไม่สามารถหาวิธีทำให้มันใช้งานได้

21
ตรวจหาเมื่อเบราว์เซอร์ได้รับการดาวน์โหลดไฟล์
ฉันมีหน้าเว็บที่อนุญาตให้ผู้ใช้ดาวน์โหลดไฟล์ที่สร้างขึ้นแบบไดนามิก ใช้เวลานานในการสร้างดังนั้นฉันต้องการแสดงตัวบ่งชี้ "กำลังรอ" ปัญหาคือฉันไม่สามารถหาวิธีตรวจสอบเมื่อเบราว์เซอร์ได้รับไฟล์ดังนั้นฉันสามารถซ่อนตัวบ่งชี้ ฉันกำลังร้องขอในรูปแบบที่ซ่อนอยู่ซึ่งโพสต์ไปยังเซิร์ฟเวอร์และกำหนดเป้าหมาย iframe ที่ซ่อนอยู่สำหรับผลลัพธ์ นี่คือสิ่งที่ฉันไม่ได้แทนที่หน้าต่างเบราว์เซอร์ทั้งหมดด้วยผลลัพธ์ ฉันฟังเหตุการณ์ "โหลด" ใน iframe ด้วยความหวังว่ามันจะทำงานเมื่อการดาวน์โหลดเสร็จสิ้น ฉันส่งคืนหัวข้อ "เนื้อหาการจัดการ: ไฟล์แนบ" พร้อมไฟล์ซึ่งทำให้เบราว์เซอร์แสดงข้อความโต้ตอบ "บันทึก" แต่เบราว์เซอร์ไม่ได้เรียกใช้เหตุการณ์ "โหลด" ใน iframe วิธีการหนึ่งที่ฉันลองใช้คือการตอบกลับแบบหลายส่วน ดังนั้นมันจะส่งไฟล์ HTML ที่ว่างเปล่ารวมถึงไฟล์ที่ดาวน์โหลดได้ที่แนบมาด้วย ตัวอย่างเช่น: Content-type: multipart/x-mixed-replace;boundary="abcde" --abcde Content-type: text/html --abcde Content-type: application/vnd.fdf Content-Disposition: attachment; filename=foo.fdf file-content --abcde สิ่งนี้ใช้ได้ใน Firefox ได้รับไฟล์ HTML ที่ว่างเปล่าไฟเหตุการณ์ "โหลด" จากนั้นแสดงกล่องโต้ตอบ "บันทึก" สำหรับไฟล์ที่สามารถดาวน์โหลดได้ แต่มันล้มเหลวบน …
488 javascript  http  mime 

15
วิธีที่เร็วที่สุดในการคัดลอกไฟล์ใน node.js
โครงการที่ฉันกำลังทำงาน (node.js) แสดงถึงการดำเนินการจำนวนมากด้วยระบบไฟล์ (การคัดลอก / อ่าน / เขียน ฯลฯ ) ฉันต้องการทราบว่าวิธีใดเร็วที่สุดและฉันยินดีที่จะรับคำแนะนำ ขอบคุณ

9
ข้อดี / ข้อเสียของการใช้ redux-saga กับเครื่องกำเนิด ES6 เทียบกับ redux-thunk กับ ES2017 async / รอ
มีจำนวนมากของการพูดคุยเกี่ยวกับเด็กล่าสุดในเมือง Redux คือตอนนี้Redux-วีรชน / Redux-เทพนิยาย มันใช้ฟังก์ชั่นเครื่องกำเนิดสำหรับการฟังการกระทำ ก่อนที่ฉันจะพันหัวฉันอยากรู้ว่าข้อดี / ข้อเสียของการใช้redux-sagaแทนที่จะเป็นวิธีการด้านล่างที่ฉันใช้redux-thunkกับ async / รอ ส่วนประกอบอาจมีลักษณะเช่นนี้ส่งการกระทำเหมือนปกติ import { login } from 'redux/auth'; class LoginForm extends Component { onClick(e) { e.preventDefault(); const { user, pass } = this.refs; this.props.dispatch(login(user.value, pass.value)); } render() { return (<div> <input type="text" ref="user" /> <input type="password" ref="pass" /> <button …

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