У меня есть требование прочитать данные изображения с SQL Server (логотип компании) и сохранить их в localStorage. Этот логотип компании отображается на левой боковой панели главной страницы, чтобы на каждой клиентской странице он был виден.
Для этой цели я использую 3 функции JS на главной странице.
function storageCheck() {
if (localStorage.getItem("imgData") === null) //check availability
document.getElementById('<%=hdfStorage.ClientID %>').value = "true"; //assign true to a hidden field
else
document.getElementById('<%=hdfStorage.ClientID %>').value = "false";
}
function storelogo(imgData) { //store image data
localStorage.setItem("imgData", imgData);
}
function getImg() { //get data
var dataImage = localStorage.getItem('imgData');
document.getElementById('imgCompanyLogo').src = dataImage;
alert('got')
}
В коде главной страницы я вызываю эти функции JS
protected void Page_LoadComplete(object sender, EventArgs e)
{
if (!IsPostBack)
{
ScriptManager.RegisterStartupScript(this, this.GetType(), "checkfn", "storageCheck()", true);
if (hdfStorage.Value == "true")
ScriptManager.RegisterStartupScript(this, this.GetType(), "storelogoo", "storelogo('" + <Base64String img data from database> + "');", true);
else if (hdfStorage.Value == "false")
ScriptManager.RegisterStartupScript(this, this.GetType(), "getlogo", "getImg();", true);
}
}
Я пытался поместить его в событие Page_Load
, но безрезультатно. Проблема, с которой я сталкиваюсь, заключается в том, что эти функции не вызываются, и если их вызывать из события загрузки страницы, скрытое поле управления не получит значение при проверке с использованием hdfStorage.Value == "true"