首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法从OnPaste事件调用Page方法

无法从OnPaste事件调用Page方法
EN

Stack Overflow用户
提问于 2014-09-29 20:11:34
回答 1查看 506关注 0票数 1

在IE中,当我从OnPaste事件调用页面方法时,当我单击输入框并点击CTRL+V时,会得到以下错误:

代码语言:javascript
复制
0x80070057 - JavaScript runtime error: Invalid argument.

在这一行代码中:

代码语言:javascript
复制
this._xmlHttpRequest.open(verb, this._webRequest.getResolvedUrl(), true );

调用堆栈如下所示:

代码语言:javascript
复制
Sys$Net$XMLHttpExecutor$executeRequest [ScriptResource.axd] Line 6055   Script
Sys$Net$_WebRequestManager$executeRequest [ScriptResource.axd] Line 6302    Script
Sys$Net$WebRequest$invoke [ScriptResource.axd] Line 6481    Script
Sys$Net$WebServiceProxy$invoke [ScriptResource.axd] Line 6923   Script
Sys$Net$WebServiceProxy$_invoke [ScriptResource.axd] Line 6807  Script
PageMethods.prototype.Message [WebForm1.aspx] Line 76   Script
PageMethods.Message [WebForm1.aspx] Line 117    Script
GetMessage [WebForm1.aspx] Line 11  Script
onpaste [WebForm1.aspx] Line 125    Script

我在一个小项目中复制了它。这里是WebForm1.aspx:

代码语言:javascript
复制
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="PageMethodTest.WebForm1" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script type='text/javascript'>
        function GetMessage() {
            PageMethods.Message(OnGetMessageSuccess, OnGetMessageFailure);
        }
        function OnGetMessageSuccess(result, userContext, methodName) {
            alert(result);
        }
        function OnGetMessageFailure(error, userContext, methodName) {
            alert(error.get_message());
        }
    </script>

</head>
<body>
    <form id='form1' runat='server'>
        <input value="paste here" onpaste="GetMessage()" onblur="GetMessage()" />
        <asp:ScriptManager ID='ScriptManager1' runat='server' EnablePageMethods='true' />
        <div>
            <input type='submit' value='Get Message' onclick='GetMessage(); return false;' />
        </div>
    </form>
</body>
</html>

这里是WebForm1.aspx.cs:

代码语言:javascript
复制
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace PageMethodTest
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        [System.Web.Services.WebMethod]
        public static string Message()
        {
            return "Hello from the server-side World!";
        }
    }
}

我从OnBlur事件中调用了相同的Page方法,当您从输入框中签出时,它可以正常工作。此OnPaste事件调用PageMethod在Chrome中运行良好。IE与大多数其他事件的OnPaste事件的上下文有什么不同吗?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-08 15:59:42

不清楚具体发生了什么,但症状与this question中描述的问题相同。IE与onpaste事件结合在一起的一些问题,再加上发出AJAX请求。

通过使用带有小延迟的setTimeout,我能够解决这个问题:

代码语言:javascript
复制
function GetMessage() {
    setTimeout(function () {
        PageMethods.Message(OnGetMessageSuccess, OnGetMessageFailure);
    }, 100);
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26108029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档