3
用戶選擇文本並用'a'tag id ='NewLink'代替,當他完成一個單詞或多個短語的描述時,服務器將獲得內容div'StartId'的innerHTML。我需要忽略的是,用戶不會在瀏覽器中更改客戶端的HTML代碼。我如何做到這一點?如何將原始的innerHTML傳遞給php?
function GetSelectedText() {
var sel = window.getSelection();
if(sel.toString().length != 0 && sel.getRangeAt) {
$('#NewLink').replaceWith($('#NewLink').html());
var rng, se, err, errt, patt;
errt = 0;
try {
\t
se=$('<span style="background-color: #3366CC;" id="NewLink">')[0];
rng=sel.getRangeAt(sel.rangeCount-1);
rng.surroundContents(se);
rng.selectNode(document.getElementById("NewLink"));
} catch (err) { errt = 1;}
if(errt != 1)
{
patt=new RegExp("</?a.*?>","g");
if (patt.test($("#NewLink").html()) ||$("#NewLink").closest("a").length||!$("#NewLink").text().replace(/\s/g,"").length)
{$("#NewLink").replaceWith($("#NewLink").html()); }
else { rng.collapse(!0);}
}
}
var StartId = document.getElementById("StartId").innerHTML;
$.post('site.com', {htmlInner:StartId}, function(data) {
\t alert(data);
\t \t });
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="StartId" onmouseup="GetSelectedText()">
Carnotaurus, a large theropod dinosaur, lived during the Late Cretaceous period. Known from a single well-preserved skeleton found in Argentina, it is a member of the Abelisauridae family<a href="#">and one of the best-understood theropods from the Southern Hemisphere. <br>Carnotaurus (derived from Latin for "meat-eating bull") <br> had thick horns above the eyes, and a very deep skull on a muscular neck.</a> <br>It was a lightly built, bipedal predator, 8 to 9 m (26.2 to 29.5 ft) long, weighing at least 1.35 metric tons (1.49 short tons). It had small, vestigial forelimbs and long and slender hindlimbs. Preserved skin impressions show a mosaic of small scales interrupted by large bumps that lined the sides of the animal. </div>
<div id="EndId"></div>
用戶可以更改HTML,仍然操縱請求主體,因此會顯示爲測試是不是真的由客戶更改。請問爲什麼你需要這個? –
@Alon Eitan,我創建了類似於https://genius.com/11715748這樣的函數的網站,我需要一個新的html來替換它在數據庫中。 –
[這個答案](http://stackoverflow.com/a/5379408/754119)會幫助你選擇部分?因爲它看起來像你的代碼已經將實際的innerHTML發送到服務器 –