ฉันมีรหัสต่อไปนี้ใน Ruby ฉันต้องการแปลงรหัสนี้เป็น JavaScript รหัสเทียบเท่าใน JS คืออะไร
text = <<"HERE"
This
Is
A
Multiline
String
HERE
ฉันมีรหัสต่อไปนี้ใน Ruby ฉันต้องการแปลงรหัสนี้เป็น JavaScript รหัสเทียบเท่าใน JS คืออะไร
text = <<"HERE"
This
Is
A
Multiline
String
HERE
คำตอบ:
ECMAScript 6 (ES6) แนะนำชนิดใหม่ของตัวอักษรคืออักษรแม่แบบ พวกเขามีคุณสมบัติมากมายการแก้ไขตัวแปรในหมู่คนอื่น ๆ แต่ที่สำคัญที่สุดสำหรับคำถามนี้พวกเขาสามารถ multiline
เทมเพลตตัวอักษรถูกคั่นด้วยbackticks :
var html = `
<div>
<span>Some HTML here</span>
</div>
`;
(หมายเหตุ: ฉันไม่ได้สนับสนุนให้ใช้ HTML ในสตริง)
การสนับสนุนเบราว์เซอร์ก็โอเคแต่คุณสามารถใช้ทรานสฟิลเลอร์เพื่อเข้ากันได้มากกว่า
Javascript ไม่มีไวยากรณ์ของเอกสารที่นี่ คุณสามารถหลบหนีขึ้นบรรทัดใหม่ตามตัวอักษรได้ซึ่งใกล้เคียง:
"foo \
bar"
ตามคำตอบแรกที่กล่าวถึงด้วย ES6 / Babel ตอนนี้คุณสามารถสร้างสตริงหลายบรรทัดได้ง่ายๆโดยใช้ backticks:
const htmlString = `Say hello to
multi-line
strings!`;
ตัวแปรการแก้ไขเป็นคุณลักษณะใหม่ที่ได้รับความนิยมที่มาพร้อมกับสตริงที่คั่นด้วยเครื่องหมายขีดหลัง:
const htmlString = `${user.name} liked your post about strings`;
นี่แค่ transpiles ลงไปที่การต่อกัน:
user.name + ' liked your post about strings'
คู่มือสไตล์ JavaScript ของ Googleแนะนำให้ใช้การต่อสตริงแทนการขึ้นบรรทัดใหม่:
อย่าทำอย่างนี้:
var myString = 'A rather long string of English text, an error message \ actually that just keeps going and going -- an error \ message to make the Energizer bunny blush (right through \ those Schwarzenegger shades)! Where was I? Oh yes, \ you\'ve got an error and all the extraneous whitespace is \ just gravy. Have a nice day.';
ช่องว่างที่จุดเริ่มต้นของแต่ละบรรทัดไม่สามารถถอดแยกได้อย่างปลอดภัยในเวลารวบรวม ช่องว่างหลังจากเครื่องหมายทับจะทำให้เกิดข้อผิดพลาดหากิน และในขณะที่เอ็นจิ้นสคริปต์ส่วนใหญ่สนับสนุนสิ่งนี้มันไม่ได้เป็นส่วนหนึ่งของ ECMAScript
ใช้การต่อสตริงแทน:
var myString = 'A rather long string of English text, an error message ' + 'actually that just keeps going and going -- an error ' + 'message to make the Energizer bunny blush (right through ' + 'those Schwarzenegger shades)! Where was I? Oh yes, ' + 'you\'ve got an error and all the extraneous whitespace is ' + 'just gravy. Have a nice day.';
\
แทนที่จะเป็นเรื่องยากที่จะสังเกตเห็นและ (3) ในขณะที่โปรแกรมสคริปต์ส่วนใหญ่สนับสนุนสิ่งนี้มันไม่ได้เป็นส่วนหนึ่งของ ECMAScript [เช่นทำไม ใช้คุณสมบัติที่ไม่เป็นมาตรฐานหรือไม่] จำไว้ว่าเป็นแนวทางสไตล์ซึ่งเกี่ยวกับการทำรหัสง่ายต่อการอ่าน + บำรุงรักษา + แก้ไขข้อบกพร่อง: ไม่ใช่แค่ "ใช้งานได้" ถูกต้อง
รูปแบบtext = <<"HERE" This Is A Multiline String HERE
ไม่สามารถใช้ได้ใน js (ฉันจำได้ว่าใช้มันมากในวัน Perl เก่าของฉันดี)
เพื่อให้การดูแลกับสายที่ซับซ้อนหรือยาวหลายครั้งฉันใช้รูปแบบอาร์เรย์:
var myString =
['<div id="someId">',
'some content<br />',
'<a href="#someRef">someRefTxt</a>',
'</div>'
].join('\n');
หรือรูปแบบที่ไม่ระบุชื่อแสดงขึ้นมาแล้ว (ยกเว้นการขึ้นบรรทัดใหม่) ซึ่งอาจเป็นบล็อกที่น่าเกลียดในรหัสของคุณ:
var myString =
'<div id="someId"> \
some content<br /> \
<a href="#someRef">someRefTxt</a> \
</div>';
นี่คืออีกหนึ่งเคล็ดลับที่แปลก แต่ทำงาน ' 1 :
var myString = (function () {/*
<div id="someId">
some content<br />
<a href="#someRef">someRefTxt</a>
</div>
*/}).toString().match(/[^]*\/\*([^]*)\*\/\}$/)[1];
แก้ไขภายนอก: jsfiddle
ES20xxรองรับการขยายสตริงข้ามหลายบรรทัดโดยใช้สตริงเทมเพลต :
let str = `This is a text
with multiple lines.
Escapes are interpreted,
\n is a newline.`;
let str = String.raw`This is a text
with multiple lines.
Escapes are not interpreted,
\n is not a newline.`;
1หมายเหตุ: สิ่งนี้จะหายไปหลังจากการย่อ / ขยายรหัสของคุณ
คุณสามารถมีสตริงหลายบรรทัดใน JavaScript บริสุทธิ์
วิธีการนี้จะขึ้นอยู่กับอนุกรมของฟังก์ชั่นซึ่งถูกกำหนดให้เป็นขึ้นอยู่กับการดำเนินงาน มันทำงานได้ในเบราว์เซอร์ส่วนใหญ่ (ดูด้านล่าง) แต่ไม่มีการรับประกันว่ามันจะยังคงทำงานได้ในอนาคตดังนั้นอย่าพึ่งพา
ใช้ฟังก์ชั่นต่อไปนี้:
function hereDoc(f) {
return f.toString().
replace(/^[^\/]+\/\*!?/, '').
replace(/\*\/[^\/]+$/, '');
}
คุณสามารถมีเอกสารได้ที่นี่:
var tennysonQuote = hereDoc(function() {/*!
Theirs not to make reply,
Theirs not to reason why,
Theirs but to do and die
*/});
วิธีนี้ได้รับการทดสอบในเบราว์เซอร์ต่อไปนี้ (ไม่ได้กล่าวถึง = ไม่ทดสอบ):
อย่างไรก็ตามระวังด้วย minifier ของคุณ มันมีแนวโน้มที่จะลบความคิดเห็น สำหรับคอมเพรสเซอร์ YUIความคิดเห็นที่เริ่มต้นด้วย/*!
(เช่นเดียวกับที่ฉันใช้) จะถูกเก็บรักษาไว้
ผมคิดว่าจริงการแก้ปัญหาจะใช้CoffeeScript
ES6 UPDATE: คุณสามารถใช้ backtick แทนการสร้างฟังก์ชั่นที่มีความคิดเห็นและวิ่งไปที่ String ในความคิดเห็น regex จำเป็นต้องได้รับการอัปเดตเพื่อตัดพื้นที่เท่านั้น คุณสามารถมีวิธีการแบบสตริงสำหรับการทำสิ่งนี้:
let foo = `
bar loves cake
baz loves beer
beer loves people
`.removeIndentation()
นั่นจะเท่ห์ บางคนควรเขียนวิธีการลบ. RemoveIndentation นี้ ... ;)
คุณสามารถทำสิ่งนี้ ...
var string = 'This is\n' +
'a multiline\n' +
'string';
ฉันมากับวิธี rigged jimmy นี้ของสายที่มีหลายแถว เนื่องจากการแปลงฟังก์ชั่นเป็นสตริงจะส่งคืนความคิดเห็นใด ๆ ภายในฟังก์ชันคุณสามารถใช้ความคิดเห็นเป็นสตริงของคุณโดยใช้ความคิดเห็นแบบหลายบรรทัด / ** / คุณเพียงแค่ต้องตัดปลายและคุณมีสายของคุณ
var myString = function(){/*
This is some
awesome multi-lined
string using a comment
inside a function
returned as a string.
Enjoy the jimmy rigged code.
*/}.toString().slice(14,-3)
alert(myString)
toString()
คืออะไร
ฉันประหลาดใจที่ฉันไม่เห็นสิ่งนี้เพราะมันใช้ได้ทุกที่ที่ฉันทดสอบและมีประโยชน์มากสำหรับเทมเพลตเช่น:
<script type="bogus" id="multi">
My
multiline
string
</script>
<script>
alert($('#multi').html());
</script>
ใครรู้สภาพแวดล้อมที่มี HTML แต่มันไม่ทำงาน
ฉันแก้ไขมันโดยการแสดงผล div ทำให้มันถูกซ่อนและเรียกรหัส div โดย jQuery เมื่อฉันต้องการมัน
เช่น
<div id="UniqueID" style="display:none;">
Strings
On
Multiple
Lines
Here
</div>
จากนั้นเมื่อฉันต้องการรับสายฉันใช้ jQuery ต่อไปนี้:
$('#UniqueID').html();
ซึ่งส่งกลับข้อความของฉันในหลายบรรทัด ถ้าฉันโทร
alert($('#UniqueID').html());
ฉันเข้าใจ:
display:none
เนื้อหาน่าจะเป็นเพราะความนิยมของส่วนหน้าแบบจาวาสคริปต์ (ตัวอย่างเช่นหน้าคำถามที่พบบ่อยซึ่งมีฟังก์ชันซ่อน / แสดง) คุณต้องระวังเพราะ Google บอกว่าพวกเขาสามารถลงโทษคุณได้หากเนื้อหาที่ซ่อนอยู่นั้นดูเหมือนว่าได้รับการออกแบบมาเพื่อเพิ่มอันดับ SEO ของคุณให้สูงขึ้น
มีหลายวิธีในการบรรลุเป้าหมายนี้
1. การต่อสแลช
var MultiLine= '1\
2\
3\
4\
5\
6\
7\
8\
9';
2. การต่อข้อมูลแบบปกติ
var MultiLine = '1'
+'2'
+'3'
+'4'
+'5';
3. Array เข้าร่วมการต่อข้อมูล
var MultiLine = [
'1',
'2',
'3',
'4',
'5'
].join('');
ประสิทธิภาพที่ชาญฉลาดการต่อกัน Slash (อันแรก) เป็นวิธีที่เร็วที่สุด
อ้างถึง กรณีทดสอบนี้สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับประสิทธิภาพ
ปรับปรุง:
ด้วยES2015เราสามารถใช้ประโยชน์จากคุณสมบัติสายแม่แบบของมัน ด้วยเราเพียงแค่ต้องใช้ back-ticks เพื่อสร้างสตริงหลายบรรทัด
ตัวอย่าง:
`<h1>{{title}}</h1>
<h2>{{hero.name}} details!</h2>
<div><label>id: </label>{{hero.id}}</div>
<div><label>name: </label>{{hero.name}}</div>
`
ใช้แท็กสคริปต์:
<script>...</script>
บล็อกที่มีข้อความหลายบรรทัดของคุณลงในhead
แท็กรับข้อความหลายบรรทัดของคุณตามที่เป็น ... (ระวังการเข้ารหัสข้อความ: UTF-8, ASCII)
<script>
// pure javascript
var text = document.getElementById("mySoapMessage").innerHTML ;
// using JQuery's document ready for safety
$(document).ready(function() {
var text = $("#mySoapMessage").html();
});
</script>
<script id="mySoapMessage" type="text/plain">
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:typ="...">
<soapenv:Header/>
<soapenv:Body>
<typ:getConvocadosElement>
...
</typ:getConvocadosElement>
</soapenv:Body>
</soapenv:Envelope>
<!-- this comment will be present on your string -->
//uh-oh, javascript comments... SOAP request will fail
</script>
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
ฉันจำไม่ได้ว่ามีปัญหาอื่นนอกเหนือจากการพิมพ์ผิดใน JS ช่องว่างที่ไม่มีปัญหา
ฉันชอบไวยากรณ์และการทำดัชนี:
string = 'my long string...\n'
+ 'continue here\n'
+ 'and here.';
(แต่จริงๆแล้วไม่สามารถพิจารณาได้ว่าเป็นสตริงหลายบรรทัด)
มีห้องสมุดนี้ที่ทำให้สวยงาม:
https://github.com/sindresorhus/multiline
var str = '' +
'<!doctype html>' +
'<html>' +
' <body>' +
' <h1>❤ unicorns</h1>' +
' </body>' +
'</html>' +
'';
var str = multiline(function(){/*
<!doctype html>
<html>
<body>
<h1>❤ unicorns</h1>
</body>
</html>
*/});
nodejs
ใช้งานในเบราว์เซอร์จะต้องมีความสำคัญ
Function.prototype.String()
มันเป็นเพียงแค่
Downvoters : รหัสนี้ให้มาเพื่อเป็นข้อมูลเท่านั้น
สิ่งนี้ได้รับการทดสอบใน Fx 19 และ Chrome 24 บน Mac
var new_comment; /*<<<EOF
<li class="photobooth-comment">
<span class="username">
<a href="#">You</a>:
</span>
<span class="comment-text">
$text
</span>
@<span class="comment-time">
2d
</span> ago
</li>
EOF*/
// note the script tag here is hardcoded as the FIRST tag
new_comment=document.currentScript.innerHTML.split("EOF")[1];
document.querySelector("ul").innerHTML=new_comment.replace('$text','This is a dynamically created text');
<ul></ul>
เพื่อสรุปฉันได้ลอง 2 วิธีที่ระบุไว้ที่นี่ในการเขียนโปรแกรมจาวาสคริปต์ผู้ใช้ (Opera 11.01):
ดังนั้นฉันแนะนำวิธีการทำงานสำหรับผู้ใช้ Opera ผู้ใช้ JS ไม่เหมือนกับที่ผู้เขียนพูดว่า:
มันใช้งานไม่ได้กับ firefox หรือ opera เฉพาะใน IE, chrome และ Safari
มันทำงานได้ใน Opera 11 อย่างน้อยก็ในสคริปต์ JS ของผู้ใช้ เสียดายที่ฉันไม่สามารถแสดงความคิดเห็นในคำตอบของแต่ละบุคคลหรือถอนคำตอบได้ฉันจะทำทันที ถ้าเป็นไปได้ผู้ที่มีสิทธิ์สูงกว่าโปรดทำเพื่อฉัน
ส่วนขยายของฉันเพื่อhttps://stackoverflow.com/a/15558082/80404 มันคาดว่าจะแสดงความคิดเห็นในรูปแบบ/*! any multiline comment */
ที่เป็นสัญลักษณ์! ใช้เพื่อป้องกันการลบโดยการทำให้มีขนาดเล็ก (อย่างน้อยสำหรับคอมเพรสเซอร์ YUI)
Function.prototype.extractComment = function() {
var startComment = "/*!";
var endComment = "*/";
var str = this.toString();
var start = str.indexOf(startComment);
var end = str.lastIndexOf(endComment);
return str.slice(start + startComment.length, -(str.length - end));
};
ตัวอย่าง:
var tmpl = function() { /*!
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
</ul>
</div>
*/}.extractComment();
อัปเดตในปี 2558 : หกปีต่อมาขณะนี้: คนส่วนใหญ่ใช้ตัวโหลดโมดูลและระบบโมดูลหลักแต่ละระบบมีวิธีการโหลดเทมเพลต ไม่ใช่อินไลน์ แต่สตริง multiline ชนิดที่พบมากที่สุดคือเทมเพลตและโดยทั่วไปแล้วเทมเพลตควรเก็บจาก JS อยู่ดีอยู่แล้ว
การใช้plugin 'text' plugin ที่จำเป็นต้องใช้กับเทมเพลตหลายบรรทัดในtemplate.html
var template = require('text!template.html')
Browserify ใช้โมดูล 'brfs'เพื่อโหลดไฟล์ข้อความ สิ่งนี้จะสร้างเทมเพลตของคุณเป็น HTML ที่รวมเป็นกลุ่ม
var fs = require("fs");
var template = fs.readFileSync(template.html', 'utf8');
ง่าย.
สามารถใช้งานได้กับ IE, Safari, Chrome และ Firefox:
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
<div class="crazy_idea" thorn_in_my_side='<table border="0">
<tr>
<td ><span class="mlayouttablecellsdynamic">PACKAGE price $65.00</span></td>
</tr>
</table>'></div>
<script type="text/javascript">
alert($(".crazy_idea").attr("thorn_in_my_side"));
</script>
คุณสามารถใช้TypeScript (JavaScript SuperSet) รองรับสตริงหลายบรรทัดและ transpilesกลับไปที่ JavaScript บริสุทธิ์โดยไม่มีค่าใช้จ่าย:
var templates = {
myString: `this is
a multiline
string`
}
alert(templates.myString);
หากคุณต้องการทำเช่นเดียวกันกับ JavaScript ธรรมดา:
var templates =
{
myString: function(){/*
This is some
awesome multi-lined
string using a comment
inside a function
returned as a string.
Enjoy the jimmy rigged code.
*/}.toString().slice(14,-3)
}
alert(templates.myString)
โปรดทราบว่า iPad / Safari ไม่รองรับ 'functionName.toString()'
หากคุณมีรหัสดั้งเดิมจำนวนมากคุณสามารถใช้ตัวแปร JavaScript ธรรมดาใน TypeScript (เพื่อวัตถุประสงค์ในการล้างข้อมูล):
interface externTemplates
{
myString:string;
}
declare var templates:externTemplates;
alert(templates.myString)
และคุณสามารถใช้วัตถุหลายสตริงจากตัวแปร JavaScript ธรรมดาซึ่งคุณใส่แม่แบบลงในไฟล์อื่น (ซึ่งคุณสามารถผสานในบันเดิล)
คุณสามารถลองใช้ TypeScript ได้ที่
http://www.typescriptlang.org/Playground
วิธีการทำ ES6 โดยใช้แม่แบบตัวอักษร:
const str = `This
is
a
multiline text`;
console.log(str);
อ้างอิงเพิ่มเติมที่นี่
ES6 ช่วยให้คุณใช้ backtick เพื่อระบุสตริงในหลายบรรทัด มันเรียกว่าเทมเพลตตัวอักษร แบบนี้:
var multilineString = `One line of text
second line of text
third line of text
fourth line of text`;
การใช้ backtick ใช้งานได้ใน NodeJS และรองรับ Chrome, Firefox, Edge, Safari และ Opera
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals
วิธีที่ง่ายที่สุดในการสร้างสตริงหลายบรรทัดใน Javascrips คือการใช้ backticks (``) สิ่งนี้อนุญาตให้คุณสร้างสตริงหลายบรรทัดซึ่งคุณสามารถแทรกตัวแปรได้${variableName}
ได้
let name = 'Willem';
let age = 26;
let multilineString = `
my name is: ${name}
my age is: ${age}
`;
console.log(multilineString);
ES6
//es2015
รุ่นของฉันของการรวมอาเรย์ตามสำหรับสตริง concat:
var c = []; //c stands for content
c.push("<div id='thisDiv' style='left:10px'></div>");
c.push("<div onclick='showDo(\'something\');'></div>");
$(body).append(c.join('\n'));
สิ่งนี้ใช้ได้ดีสำหรับฉันโดยเฉพาะอย่างยิ่งเมื่อฉันแทรกค่าลงใน html ที่สร้างขึ้นด้วยวิธีนี้ แต่มีข้อ จำกัด มากมาย การเยื้องจะดี ไม่ต้องจัดการกับเครื่องหมายคำพูดซ้อนจะดีจริงๆและความใหญ่โตของมันทำให้ฉันรำคาญ
.push () เพื่อเพิ่มไปยังอาร์เรย์ใช้เวลานานหรือไม่? ดูคำตอบที่เกี่ยวข้องนี้:
( มีเหตุผลที่นักพัฒนา JavaScript ไม่ใช้ Array.push () หรือไม่ )
หลังจากดูที่การทดสอบการทำงาน (ตรงข้าม) เหล่านี้ดูเหมือนว่า. พุช () เป็นสิ่งที่ดีสำหรับสตริงอาเรย์ซึ่งไม่น่าจะเติบโตมากกว่า 100 รายการ - ฉันจะหลีกเลี่ยงการเพิ่มดัชนีที่มีขนาดใหญ่กว่าสำหรับอาเรย์
คุณสามารถใช้+=
เพื่อเชื่อมสตริงของคุณดูเหมือนไม่มีใครตอบว่าซึ่งจะอ่านได้และยังเรียบร้อย ... บางสิ่งเช่นนี้
var hello = 'hello' +
'world' +
'blah';
สามารถเขียนได้เช่นกัน
var hello = 'hello';
hello += ' world';
hello += ' blah';
console.log(hello);
นอกจากนี้โปรดทราบว่าเมื่อขยายสตริงไปยังหลายบรรทัดโดยใช้เครื่องหมายทับขวาด้านหน้าที่จุดสิ้นสุดของแต่ละบรรทัดอักขระพิเศษใด ๆ (ส่วนใหญ่จะมีช่องว่างแท็บและความคิดเห็นที่เพิ่มโดยไม่ได้ตั้งใจ) หลังจากเครื่องหมายทับขวาข้างหน้าจะทำให้เกิดข้อผิดพลาดที่ไม่คาดคิด ออก
var string = "line1\ // comment, space or tabs here raise error
line2";
กรุณาเพื่อความรักของอินเทอร์เน็ตใช้การเรียงต่อสตริงและเลือกที่จะไม่ใช้โซลูชั่น ES6 สำหรับสิ่งนี้ ES6 ไม่ได้รับการสนับสนุนทั่วทั้งกระดานเช่นเดียวกับ CSS3 และเบราว์เซอร์บางตัวช้าที่จะปรับตัวเข้ากับการเคลื่อนไหว CSS3 ใช้จาวาสคริปต์ธรรมดาผู้ใช้ของคุณจะขอบคุณ
ตัวอย่าง:
var str = "This world is neither flat nor round. "+
"Once was lost will be found";
คุณต้องใช้ตัวดำเนินการเรียงต่อกัน '+'
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<p id="demo"></p>
<script>
var str = "This "
+ "\n<br>is "
+ "\n<br>multiline "
+ "\n<br>string.";
document.getElementById("demo").innerHTML = str;
</script>
</body>
</html>
โดยการใช้\n
ซอร์สโค้ดของคุณจะมีลักษณะ -
นี้ <br> คือ <br> หลาย <br> สตริง
โดยใช้การ<br>
ส่งออกเบราว์เซอร์ของคุณจะมีลักษณะ -
นี้ คือ หลาย เชือก
ฉันคิดว่าวิธีแก้ปัญหานี้ควรทำงานใน IE, Chrome, Firefox, Safari, Opera -
ใช้ jQuery :
<xmp id="unique_id" style="display:none;">
Some plain text
Both type of quotes : " ' " And ' " '
JS Code : alert("Hello World");
HTML Code : <div class="some_class"></div>
</xmp>
<script>
alert($('#unique_id').html());
</script>
ใช้จาวาสคริปต์เพียว:
<xmp id="unique_id" style="display:none;">
Some plain text
Both type of quotes : " ' " And ' " '
JS Code : alert("Hello World");
HTML Code : <div class="some_class"></div>
</xmp>
<script>
alert(document.getElementById('unique_id').innerHTML);
</script>
ไชโย !!
<xmp>
เลิกใช้แล้ว มันอาจได้รับอนุญาตใน HTML แต่ไม่ควรใช้โดยผู้เขียนใด ๆ ดูstackoverflow.com/questions/8307846/…
<pre>;
กับ escapes ไม่ช่วยฉันแก้ปัญหา .. ฉันเจอปัญหาที่คล้ายกันในวันนี้และพยายามหาวิธีแก้ปัญหา .. แต่ในกรณีของฉันฉันพบวิธีหนึ่งที่ดีมากในการแก้ไขปัญหานี้โดย เอาท์พุทในความคิดเห็น html แทน <xmp> หรือแท็กอื่น ๆ ฮ่า ๆ. ฉันรู้ว่ามันไม่ใช่วิธีมาตรฐานในการทำเช่นนี้ แต่ฉันจะแก้ไขปัญหานี้ในเช้าวันพรุ่งนี้อีกแล้ว .. ไชโย !!
style="display:none"
Chrome จะพยายามโหลด<img>
ภาพที่กล่าวถึงในบล็อกตัวอย่าง
เพิ่งลองตอบคำถามแบบไม่ระบุชื่อและพบว่ามีเคล็ดลับเล็กน้อยที่นี่มันไม่ทำงานหากมีช่องว่างหลังแบ็กสแลช\
ดังนั้นวิธีการแก้ปัญหาต่อไปนี้ใช้ไม่ได้ -
var x = { test:'<?xml version="1.0"?>\ <-- One space here
<?mso-application progid="Excel.Sheet"?>'
};
แต่เมื่อพื้นที่ถูกลบมันทำงาน -
var x = { test:'<?xml version="1.0"?>\<-- No space here now
<?mso-application progid="Excel.Sheet"?>'
};
alert(x.test);
หวังว่ามันจะช่วย !!