別のアプリケーションにプラグインするための JavaScript の文字列を作成する「カスタム コントロール」プロジェクトがあります。アプリケーションは、特定の動作を決定するために「カスタム コントロール」を呼び出します。
私が抱えている問題は、javascript を含む文字列内に複数レベルの引用符が必要なことです。以下のバージョンでは、内側の引用符をエスケープしようとしましたが、IE はエラーをスローします (エラー 80020101 のため操作を完了できませんでした)。javascriptを別のjsファイルに入れてプラグインコードから呼び出すことで、過去に同様の問題を解決しました。ただし、この場合、アプリケーションに js ファイルを「表示」させることはできません。渡すことができる文字列にjavascriptを入れるにはどうすればよいですか?
関連するコードは次のとおりです。
class Class1 : Literal
{
protected override void CreateChildControls()
{
var controlHtml = new StringBuilder();
controlHtml.Append("<script type='text/javascript'>");
controlHtml.Append("$('#prodcon_error_msg').css('display', 'none');" +
"$('#prodcon_client_id_filterimg').click(function() {" +
"ShowFilterDialog('Client ID', 'clientId');" +
"});");
controlHtml.Append("function ShowFilterDialog(criteriaName, filterTitle) {" +
"alert('show dialog code here for ' + criteriaName);" +
"var filterDialogDiv = document.createElement('DIV');");
controlHtml.Append("filterDialogDiv.innerHTML = \"<div id='customaccountcriteriafilterdialog' class='dialogback'><div class='dialogheadingarea'>" +
"<span class='dialogtitle' style='float: left;'> \" + filterTitle + \" Lookup</span>" +
"<img class='dialogcloseimage' onmouseup=\"removeElement('customaccountcriteriafilterdialog');\" src='../../images/boxy.gif'/>" +
"</div><br/>Key word: <input type='text' id='criteriaFilterKeyword' /></div>");
controlHtml.Append("filterDialogDiv.style.position = 'absolute';" +
"filterDialogDiv.style.left = '300px';" +
"filterDialogDiv.style.top = '85px';" +
"filterDialogDiv.style.Zindex = 4; " +
"document.body.appendChild(filterDialogDiv);" +
"}");
this.Text = controlHtml.ToString();
}
}
注: 末尾のスクリプト タグは、追加する前に呼び出し元のアプリケーションによって追加されます。