Codes DeCodes Ответов: 1

Javascript print не показывает весь HTML элемент в диалоговом окне печати


Я использую javascript print для открытия заданного содержимого div в новой вкладке и печати страницы. При нажатии кнопки print вызывается функция printDiv (). Мой код таков

функция printDiv() {
var printHTML = $('#divPageContent'). html();

ВАР ссылке = " <ссылка тип=\"текст/CSS в\" отн=\"стилей\" с href=\"\/содержание/темы/стили.УСБ\" /&ГТ; &ЛТ;скрипт тип=\"текст/JavaScript\" в src=\"\/ \ Scripts/jquery-1.5.1.min.js " &ГТ;&ЛТ;\/скрипт>";
ВАР скрипт = "<сценарий тип=\"текст/JavaScript\"и GT; $(документ).готовые(функция () { $( \".разбиение на страницы\" ).удалить();$( \"#печати\" ).удалить();$( \".в стиле\" ).удалить(); }); &ЛТ;\/скрипт>";
тег VAR = "в<html-код&ГТ; &ЛТ;глава&ГТ;" + ссылка + скрипт + "&ЛТ;/головки&ГТ;&ЛТ;события onload тела =\"окне.печать()\"&ГТ; "+ printHTML + " &ЛТ;/тело&ГТ;&ЛТ;/HTML и ГТ;";

var mywindow = window. open();
окно.документ.открыть();
окно.документ.писать(тег);

окно.документ.рядом();
setTimeout(function () { mywindow. close ();}, 1);
}

При нажатии кнопки печати все работает нормально. Следующий html генерируется на теге. Теперь проблема заключается в том, что дочерний элемент внутри тега ul class= "option-list RadioButtonList" не отображается в диалоговом окне печати. Однако если я отменю диалог, то будет показан дочерний элемент этого тега.


"<html> <head>  <link type="text/css" rel="stylesheet" href="/Content/themes/styles.css" />  <script type="text/javascript" src="/Scripts/jquery-1.5.1.min.js " ></script><script type="text/javascript">    $(document).ready(function () { $( ".pagination" ).remove();$( "#print" ).remove();$( ".styled" ).remove();  });    </script></head><body onload ="window.print()">       <div id="StagePageControlId-6174" data-hasresult="0" data-controltype="Headline" class="customcontrol">
        <h1>headline</h1> <div id="print"> <a href="#" class="printicon" onclick="printDiv();" style="float: right; position: relative;top: -40px; right: 20px;">Print </a> </div>
    </div> 
    <div id="StagePageControlId-6175" data-hasresult="0" data-controltype="TextEditor" class="customcontrol">
        <div class="editor-wrapper">r
</div>
    </div> 
    <div id="StagePageControlId-6176" data-hasresult="1" data-controltype="RadioButtonList" class="customcontrol">
                        <h3>rbl1</h3>
<ul class="option-list RadioButtonList" data-controlproperties="26159"> 
<li data-delete="0" class="OrderingItem "><span class="radio" style="background-position: 0px 0px;"></span><input type="radio" onclick="RadioButtonList.ApplyClickevent(this);" class="styled" name="Option-26159" id="option-12616"><label for="option-12616">1</label></li><li data-delete="0" class="OrderingItem "><span class="radio" style="background-position: 0px 0px;"></span><input type="radio" onclick="RadioButtonList.ApplyClickevent(this);" class="styled" name="Option-26159" id="option-12617"><label for="option-12617">2</label></li></ul>
    </div> 
<div class="pagination">
    <ul>
        <li class="prev"><a class="btn-gray-left" href="#">Föregående steg</a></li>
        <li>Steg 2 av 4</li>
        <li class="next"><a class="btn-blue-right" href="#">Nästa steg</a></li>
    </ul>
</div>
 </body></html>"


Что я уже пробовал:

Я удалил onclick из ul li, чтобы посмотреть, не является ли это причиной проблемы. Однако это не сработало.

1 Ответов

Рейтинг:
4

Richard Deeming

Неудивительно, учитывая, что дочерние элементы имеют класс styled, и ваш введенный скрипт удаляет все элементы с этим классом! :)

$( ".styled" ).remove();
...
<ul class="option-list RadioButtonList" ...>
<li ...>...<input type="radio" ... class="styled" ...

Если вы хотите, чтобы эти элементы были напечатаны, вам нужно удалить сценарий, который удаляет их из документа.