一开始,我是这么做的,把要分享的博客内容放到a标签的value中,然后通过点击事件传值this.getAttribute(‘value),传给transMit 函数;
<a href="javascript:void(0);" id="blog-share-add-<?=$arResult["Post"]["ID"]?>" value="<?=$arResult["Post"]["textFormated"]?>" onclick="transMit('分享自//<?=CUser::FormatName($arParams["NAME_TEMPLATE"], $arTmpUser, ($arParams["SHOW_LOGIN"] != "N" ? true : false))?>:'+this.getAttribute('value'),event)"></a>
然后,产品小哥上网上随便截了段话就发微博测试了,下面是那段话的内容。你应该发现了,他复制的是段带连接的文字;于是乎,这段文字在我上面的a标签value中就炸了;
房屋建筑工程大体操作流程:
<br>1、<a href="https://www.baidu.com/s?wd=%E5%8F%91%E6%94%B9%E5%A7%94&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1Y4n1R3uHnkuHIBPvcsuAc10ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3En1b1PW0vPjc3" target="_blank">发改委</a>立项
<br>2、规划委审批
<br>3、公开招标或<a href="https://www.baidu.com/s?wd=%E7%9B%B4%E6%8E%A5%E5%8F%91%E5%8C%85&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1Y4n1R3uHnkuHIBPvcsuAc10ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3En1b1PW0vPjc3" target="_blank">直接发包</a>
<br>4、办理开工许可证
<br>5、进场
<br>6、分部分项验收
<br>7、整体验收
<br>8、建委备案
<br>9、结算
1. 解决方法:我首先想到的是php 的 str_replace替换文字中的双引号;测试了不行;如果把微博中的单双引号分别替换成其他特殊字符串,像‘/’在url中经常替换成”%2F”一样,然后在通过js再替换回来,感觉应该可以,但是太麻烦;
2. 我想既然把用户的内容放到代码属性中很麻烦,而且有一定危险性(恶意脚本注入参考光光:代码编写中会遇到的安全性问题);于是,我单独加了一个标签元素来存储信息,然后通过参数传递这个标签元素的ID,这样问题就解决了
代码:
<span class="feed-inform-share">
<span id="message-<?=$arResult["Post"]["ID"]?>" style="display:none;"><?=$arResult["Post"]["textFormated"]?></span>
<a href="javascript:void(0);" id="blog-share-add-<?=$arResult["Post"]["ID"]?>" onclick="transMit('分享自//<?=CUser::FormatName($arParams["NAME_TEMPLATE"], $arTmpUser, ($arParams["SHOW_LOGIN"] != "N" ? true : false))?>:','message-<?=$arResult["Post"]["ID"]?>',event)"></a>
</span>
function transMit(value,id,evt){
var e=(evt)?evt:window.event;
var body = document.getElementsByClassName("template-bitrix24")[0];
var windowSize = BX.GetWindowInnerSize();
var top = parseInt(windowSize.innerHeight*0.33);
BX("transmit_box").style.top = top + 'px';
BX.show(BX("transmit_box"));
var mask = BX.create("DIV",
{
"attrs": {"id": "transmit_box_mask"},
// "children":
// [
// BX.create("SPAN",
// {
// "attrs": {"class": "bx-crm-edit-content-location-description"},
// "text": "<?= CUtil::JSEscape($arResult['PAY_SYSTEM_ID_TITLE']) ?>"
// })
// ]
}
);
body.appendChild(mask);
if (window.event) {
e.cancelBubble=true;
} else {
//e.preventDefault();
e.stopPropagation();
}
BX("POST_MESSAGE").innerHTML = value+BX(id).innerHTML;
BX.bind(BX("transmit_box_mask"),"click",function(){
BX.hide(BX("transmit_box"));
body.removeChild(BX("transmit_box_mask"));
});
}