I have the following:
public MainPage()
{
webBrowser1.ScriptNotify += new EventHandler<NotifyEventArgs>(webBrowser1_ScriptNotify);
}
void webBrowser1_ScriptNotify(object sender, NotifyEventArgs e)
{
// ... some code ...
webBrowser1.InvokeScript("nativeCallback", response.Serialize());
}
The script notify is triggered when a user presses a button on the web page. I am trying to invoke the JavaScript below but i keep getting Error 80020101.
<script type="text/javascript">
function nativeCallback(e){
document.getElementById('callbackDiv').appendChild("<b>" + e + "</b>");
}
</script>
80020101 means that there is a problem compiling the function ready to execute it.
The problem is that appendChild() is expecting a node to be passed and you're giving it a string.
Try this instead:
<script type="text/javascript">
function nativeCallback(e){
var b = document.createElement('b');
b.innerHTML = e;
document.getElementById('callbackDiv').appendChild(b);
}
</script>
You can also access callbackDiv directly:
callbackDiv.appendChild(b);
Related
I have this hidden button that is linked to a function I would like to trigger automatically on the web page once the session has been timed out:
Button code:
<asp:Button runat="server" id ="btnHdn" Style="display: none" OnClick="Button1_Click"/>
Timeout session trigger:
setTimeout(function ()
{
document.getElementById("btnHdn").click;
}, timeout);
The code behind I would like to call (.cs):
protected void Button1_Click(object sender, EventArgs e)
{
RedirectToHomePage();
}
protected void RedirectToHomePage()
{
try
{
string whichCountry = ConfigurationManager.AppSettings["country"].ToString();
string isFromGMAL = ConfigurationManager.AppSettings["GMAL"].ToString();
string urlStr = "LanguageSelection.aspx";
if (whichCountry.ToLower() == "sg")
{
urlStr = "LandingPage.aspx";
}
else if (whichCountry.ToLower() == "nl")
{
urlStr = "LandingPagexxxx.aspx";
}
}
catch (System.Exception ex)
{
}
}
Apparently, the code does not seem to be working. Once the session has reached zero, nothing happened and the timer will keep continue on counting.
Would you guys please identify what is wrong with the code?
You just need to change little bit on JavaScript code cause btnHdn button ClientId is change on client side so use it like below and .click is a method so add brackets on it like .click()
setTimeout(function () {
document.getElementById("<%=btnHdn.ClientID%>").click();
}, timeout);
Is there any way to call the click function from the c# application
Here's the code that set the function:
$('#connectbtn').unbind('click').attr('disabled', false);
$('#connectbtn').bind('click', function() {
//CODE TO BE EXECUTED
}).removeAttr('disabled');
try it,
ClientScript.RegisterStartupScript(this.GetType(), "DateTimeFromServer", string.Format(#"<script>
$(function () {{
$('#connectbtn').trigger('click','{0}');
}});
</script>", DateTime.Now));
I have an Enable.js file that has an Enable() function. I want to call this Enable function from the C# codebehind. My .js file and c# file are in same application.
I have tried this, but it doesn't help me.
Page.ClientScript.RegisterStartupScript(this.GetType(), "click", "Enable(true)", true);
Try this:
ScriptManager.RegisterClientScriptInclude(
this,
typeof(Page),
"Enable-js",
ResolveClientUrl("~/scripts/Enable.js"));
ScriptManager.RegisterStartupScript(
this, GetType(), Guid.NewGuid().ToString(),
"Enable(True);", true);
http://msdn.microsoft.com/pt-br/library/bb337005.aspx
I could see "click" in your code. Hence, I assume that you need to click some button to call Enable(true) function inside Enable.js file
Follow these below steps:
Reference your Enable.js file inside <head> section like below.
<script src="Scripts/Enable.js" type="text/javascript"></script>
Enable.js file is given below:
function Enable(var){
alert(val)
}
To call on Enable() function on Button1's click event:
protected void Page_Load(object sender, EventArgs e){
Button1.Attributes.Add("OnClick", "return Enable('true');");
}
Let me know if you need some more help.
I wrote a nice little function for calling jquery or just general JS in C# based on some VB I saw a while ago.
public bool runJQueryCode(string message)
{
ScriptManager requestSM = ScriptManager.GetCurrent(Page);
if (requestSM != null && requestSM.IsInAsyncPostBack)
{
ScriptManager.RegisterClientScriptBlock(Page, typeof(Page), Guid.NewGuid().ToString(), getjQueryCode(message), true);
}
else
{
Page.ClientScript.RegisterClientScriptBlock(typeof(Page), Guid.NewGuid().ToString(), getjQueryCode(message), true);
}
return true;
}
private string getjQueryCode(string jsCodetoRun)
{
string x = "";
x += "$(document).ready(function() {";
x += jsCodetoRun;
x += " });";
return x;
}
So you can just call runJqueryCode("alert('hey')");
You are making a mistake here:
Page.ClientScript.RegisterStartupScript(this.GetType(), "click", "Enable(true)", true);
The Enable(true) is not possible its literal string true that you're trying to pass as parameter.
You should try this way, so it may help.Its only a sample for understanding
string func = "showSuccessMessage('"+name+"');";
//Pass string as funcion in c#
This Link will explain calling javascript function with parameter from C# Code behind.
this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "xx",
"<script>test("+x+","+y+");</script>");
i am trying to implement a button click event and trying to call it in my java script function without actually clicking the button.
protected void btn_hid_Click(object sender, EventArgs e) {
string fbid = tb_id.Text;
query = "select userid from users where fbid='" + fbid + "'";
ds = db.SelectDs(query);
}
now i want to call this function in javascript function as soon as page load occurs and java script is called.
function func() {
alert("hiden");
$(document).ready(function () {
control or simple html control
$("[id*='btn_hid']").click();
});
alert("hiden end");
}
but this is not happening.Could you please tell how to do it?
You can try with this code
btn_hid.Attributes.Add("onclick","return YourFunction()");
Nota : if your wish also register dynamically your script you can use
var script = "";
Page.RegisterStartupScript("YourkeyOfScript",script);
Nota : You can also use OnClientClick in your interface
Your code is right. but It may be some problem. you can try with the alternate code.
using the following line of code.
__doPostBack('<%= btn_hid.ClientID %>', '')
i have a button1_click() function which runs on page load,,now i want to call this function from javascript,,for that purpose i need to do dopostback in javascript,,can nyone tell how can i do that..as u can see my pageload function that button1_click() runs on postback
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
int l = files.Length;
Button1.Attributes.Add("onclick", " alertMe("+ l.ToString() +");");
}
Button1_Click();
}
my javascript code :
function alertMe(len)
{
if(len>3)
//do postback(post back will run Button1_click function)
else
alert('Hello');
}
This is a helpful link
From the article:
"
Calling postback event from Javascript
There may be some scenario where you may want to explicitly postback to the server using some clientside javascript. It is pretty simple to do this.
ASP.NET already creates a client side javascript method as shown below to support Postbacks for the web controls:
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
"
one way would be to use an actual asp:Button and utilize the OnClientClick event...
<asp:Button id="myButton" runat="Server" OnClick="Button1_Click" OnClientClick="alertMe();" />
function alertMe()
{
if (this.len>3)
{
return true;
}
else
{
return false;
}
}
if alertMe returns true, the the postback to the server will occur, if it returns false,
it won't.
here is a link to more details on the OnClientClick event.
It looks like you want to use ajax to call this server method. You can use ajax.net to do this. Obviously as a result it will not be postback.
Have a look here for examples
Possibly this:
function alertMe(len)
{
if(len>3)
//do postback(post back will run Button1_click function)
alertMe(len);
else
alert('Hello');
}
I would always try to avoid inline js though