Your Privacy Matters: We use our own and third-party cookies to improve your experience on our website. By continuing to use the website we understand that you accept their use. Cookie Policy
120
TypeError: Cannot read property 'document' of null
posted

I get the error: TypeError: Cannot read property 'document' of null on Infragistics.lob.js:880

Steps to recreate:

1: Hit script link which executes previewHTMLContent function (append the html to htmlEditor div).

2: Hit edit button which executes loadHTMLEditor function. This clears the content/styles/css of the htmlEditor div then loads the HTML editor with the content html.

3: Change the script by clicking on a new script link and the previewHTMLContent function is executed again with the new HTML

4: Hit edit button for new script. This is where the div empties out and the javascript error occurs. 

Once you load the HTMLEditor, are you unable to reload it?

HTML:

<div>
<div class="col-md-4">
<div class="panel panel-default">
<div class="panel-heading">
<button class="btn btn-info pull-right" type="button"><span class="glyphicon glyphicon-plus"></span> Add</button>
<h3>Script Documents</h3>
<div class="clearfix"></div>
</div>
<div class="panel-body">
<ul class="nav nav-pills">
@foreach (var script in @Model)
{
<li>
<span class="glyphicon glyphicon-arrow-right pull-right"></span>
<a href="BLOCKED SCRIPTvoid(0);" class="btn btn-default btn-script" data-id="@script.ID">@script.Name</a>
</li>
}
</ul>
</div>
</div>
</div>
<div class="col-md-8">
<div class="panel panel-default">
<div class="panel-heading">
<button id="Edit" class="btn btn-info pull-right" type="button" data-id=""><span class="glyphicon glyphicon-pencil"></span> Edit</button>
<h3>Details</h3>
<div class="clearfix"></div>
</div>
<div class="panel-body">
<div id="container">
<div id="htmlEditor"></div>
</div>
</div>
</div>
</div>
</div>

Javascipt:

$(function () {
$('a.btn-script').click(function () {
var id = $(this).data('id');
$.ajax({
url: "/Scripts/Display/",
type: "POST",
data: { id: id},
success: function (result) {
clearContent();
previewHTMLContent(result.script);
setEditDataId(id);
}
});
});

$('#Edit').click(function () {
$.ajax({
url: "/Scripts/Display/",
type: "POST",
data: { id: $(this).data('id') },
success: function (result) {
clearContent();
loadHTMLEditor(result.script);
}
});
});
});

function setEditDataId(id) {
$('#Edit').data('id', id);
}

function previewHTMLContent(script) {
var contentText = $("<div/>").html(script).text();
$("#htmlEditor").append(contentText);
}

function loadHTMLEditor(script) {
var height = $('html').hasClass('touch') ? 500 : 800,
contentText = $("<div/>").html(script).text();
var $igTBar = null;

$("#htmlEditor").igHtmlEditor({
height: height,
width: "98%",
customToolbars: [
{
name: "DeleteContentButton",
collapseButtonIcon: "ui-igbutton-collapse",
expandButtonIcon: "ui-igbutton-expand",
items: [{
name: "appendDeleteButton",
type: "button",
handler: appendDeleteButton,
scope: this,
props: {
isImage: {
value: false,
action: '_isSelectedAction'
},
imageButtonTooltip: {
value: "Clear all content",
action: '_tooltipAction'
},
imageButtonIcon: {
value: "ui-icon-contact",
action: '_buttonIconAction'
}
}
}]
}]
});

$("#htmlEditor").igHtmlEditor("setContent", contentText, "html");

changeToolbarsPosition();
}

function appendDeleteButton(ui) {
$("#htmlEditor").igHtmlEditor("setContent", "", "html");
}

function changeToolbarsPosition() {
$($("#htmlEditor").find("span[id*='insertObjectToolbar'].ui-igtoolbar")).insertAfter($("#htmlEditor").find("span[id*='textToolbar'].ui-igtoolbar"));
}

function clearContent() {
$("#htmlEditor").empty();
$("#htmlEditor").removeClass();
$("#htmlEditor").removeAttr('style');
}

Controller:

public ActionResult Index()
{
List<CRMScript> scripts = _CrmScriptRepository.GetAllScripts();

return View(scripts);
}

[HttpPost]
public ActionResult Display(int? id)
{
List<CRMScript> scripts = _CrmScriptRepository.GetAllScripts();

string script = scripts.FirstOrDefault(s => s.ID == id).Script;

if (script == null) HttpNotFound();

return Json(new {success = true, script});
}

Parents
  • 2095
    posted

    Hi Kyle Wingate,

    Thank you for using Infragistics products!

    I have a problem to run your code because of missing parts of it: CRMScript, _CrmScriptRepository...

    It will be more convenient and easier to investigate if you send a small sample of your project as attachment, where the issue is isolated. Sending of code is acceptable when you want to show only few lines. Otherwise, often some parts of the project are missing and it is impossible to assemble working project (as it is in your case). As soon as we receive working sample, we can start investigate the issue you complaining of.

Reply Children