2012-08-02 17 views
7

छीन लिया गया है मैं wysihtml5 wysiwyg संपादक का उपयोग कर रहा हूँ।wysihtml5। छवि src और href

समस्या यह है कि छवि स्रोत विशेषता और लिंक href विशेषता HTML से छीन ली गई है। सर्वर पर मैं पहले से ही एचटीएमएल छीन रहा हूँ।

मैं इस समस्या को कैसे ठीक कर सकता हूं?

मैं उन्नत.जेएस फैसले का उपयोग कर रहा हूं। सभी नियमों के साथ।

Editor

अद्यतन 1

खैर editor.getValue और jquery().val() for textarea प्रस्तुत फार्म पर ही मान देते हैं। इसका मतलब है कि फॉर्म सही ढंग से भेजा जाना चाहिए।

लेकिन मैंने ब्राउजर से पोस्ट अनुरोध भेजा है। और यह यूआरएल के बिना है। कुछ गलत।

अद्यतन 2

अगर मैं img के साथ जुड़े हुए नियम-सेट सब कुछ से हटा दें, फिर भी यह inproperly काम करता है।

अद्यतन 3

जवाब में टिप्पणी Marrowmaw करने के लिए।

मैं उम्मीद कर रहा हूँ:

<a href="http://domain.com/" title="Link: http://domain.com">Link</a> 

लेकिन मैं मिल

<a href="" title="Link: Null">Link</a> 

अद्यतन 4

<div id="wysihtml5-toolbar" style="display: none;"> 
     <button class="btn" data-wysihtml5-command="bold"> 
     {{ "Bold"|trans }} 
     </button> 
     <button class="btn" data-wysihtml5-command="italic"> 
     {{ "Italic"|trans }} 
     </button> 
     <button class="btn" data-wysihtml5-command="createLink"> 
     {{ "Link"|trans }}/{{ "Unlink"|trans }} 
     </button> 
     <button class="btn" data-wysihtml5-command="insertUnorderedList"> 
     * 
     </button> 
     <button class="btn" data-wysihtml5-command="insertOrderedList"> 
     1,2,3 
     </button> 
     <button class="btn" data-wysihtml5-command="formatBlock" data-wysihtml5-command-value="h1"> 
     {{ "Heading"|trans }} 
     </button> 
     <button class="btn" data-wysihtml5-command="insertImage"> 
     {{ "Image"|trans }} 
     </button> 

     <div data-wysihtml5-dialog="createLink" style="display: none;"> 
      <label> 
      {{ "Link"|trans }}: 
      <input data-wysihtml5-dialog-field="href" value="http://"> 
      </label> 
      <a data-wysihtml5-dialog-action="save">{{ "Save"|trans }}</a>&nbsp;<a data-wysihtml5-dialog-action="cancel">{{ "Cancel"|trans }}</a> 
     </div> 
      <!-- Dialog --> 
     <div data-wysihtml5-dialog="insertImage" style="display: none;"> 
      <label> 
      URL: <input data-wysihtml5-dialog-field="src" value="http://"> 
      </label> 
      <label> 
      Alternative text: <input data-wysihtml5-dialog-field="alt" value=""> 
      </label> 
      <label> 
       {{ "Align"|trans }}: 
       <select data-wysihtml5-dialog-field="className"> 
        <option value="">{{ "default"|trans }}</option> 
        <option value="wysiwyg-float-left">{{ "left"|trans }}</option> 
        <option value="wysiwyg-float-right">{{ "right"|trans }}</option> 
       </select> 
      </label> 
      <a data-wysihtml5-dialog-action="save">{{ "Save"|trans }}</a>&nbsp;<a data-wysihtml5-dialog-action="cancel">{{ "Cancel"|trans }}</a> 
     </div> 
     </div> 
     <form action="{{ path('###_save_homepage') }}" method="POST" > 
     <textarea id="wysihtml5-textarea" placeholder="{{ "Enter your text"|trans }}..." autofocus name="homepage" style="width:700px;height:400px;">   
      {{ homepage|raw }}   
     </textarea> 
     <input type="submit" value="{{ "Save"|trans }}" class="btn" /> 
    </form> 

और जे एस init:

<script type="text/javascript"> 
jQuery(document).ready(function(){ 
    var editor = new wysihtml5.Editor("wysihtml5-textarea", { // id of textarea element 
      toolbar:  "wysihtml5-toolbar", // id of toolbar element 
      parserRules: wysihtml5ParserRules // defined in parser rules set 
     });  

    }); 

</script> 
+0

मैंने –

+0

के साथ पोस्ट अपडेट किया है क्या एचटीएमएल सर्वर पर भेजे जाने से पहले छीन लिया जाता है, या क्या यह क्लाइंट और सर्वर के बीच कहीं भी छीन जाता है? यदि यह उत्तरार्द्ध है, तो आप इसे भेजने से पहले एचटीएमएल से बच सकते हैं, और दूसरे छोर पर इसे अनदेखा कर सकते हैं। – starbeamrainbowlabs

+0

ऐसा लगता है कि कहीं भी% के बीच) –

उत्तर

16

आपके द्वारा संदर्भित wysihtml5-x.x.x.js फ़ाइल को देखने का प्रयास करें।

उन्होंने फैसला किया कि वे केवल पूर्ण यूआरएल (एक्सएसएस के खिलाफ सुरक्षा के नाम पर) की अनुमति देंगे। यदि आप उस व्यापार के साथ सहज हैं तो नीचे दिया गया कोड अनिवार्य रूप से आपको कोई मूल्य लेने की अनुमति देता है।

Ctrl-F "var attributeCheckMethods" और निम्नलिखित बनाने के परिवर्तन के लिए - source:

var attributeCheckMethods = { 
url: (function() { 
    /*var REG_EXP = /^https?:\/\//i;*/ 
    return function(attributeValue) { 
    /*if (!attributeValue || !attributeValue.match(REG_EXP)) { 
     return null;*/ 
    if (!attributeValue) { 
     return ""; 
    } 
    /*return attributeValue.replace(REG_EXP, function(match) { 
     return match.toLowerCase(); 
    });*/ 

    var parser = document.createElement('a'); 
    parser.href = attributeValue; 

    if ( parser.protocol == 'http:' 
     || parser.protocol == 'https:' 
     || parser.protocol == 'ftp:' 
    ) return attributeValue; 
    }; 
})(), 
1

तरीका WYSIHTML5 मार्कअप सत्यापित करता है स्पष्ट रूप से सख्त है। यदि यूआरएल या एसआरसी मान्य नहीं है, तो इसे छोड़ा जाएगा।

मैं parser_rules/advanced.js फ़ाइल की जांच करूंगा। आप प्रत्येक टैग को मान्य करने वाले नियमों को हटा, संशोधित और संपादित कर सकते हैं।

संबंधित मुद्दे