JS脚本调用类

 /// <summary>
    /// 一些常用的Js调用
    /// 添加新版说明:由于旧版普遍采用Response.Write(string msg)的方式输出js脚本,这种
    /// 方式输出的js脚本会在html元素的&lt;html&gt;&lt;/html&gt;标签之外,破坏了整个xhtml的结构,
    /// 而新版本则采用ClientScript.RegisterStartupScript(string msg)的方式输出,不会改变xhtml的结构,
    /// 不会影响执行效果。
    /// 为了向下兼容,所以新版本采用了重载的方式,新版本中要求一个System.Web.UI.Page类的实例。
    /// 创建时间:2006-9-13
    /// 创建者:马先光
    /// 新版作者:周公
    /// 修改日期:2007-4-17
    /// 修改版发布网址:http://blog.csdn.net/zhoufoxcn
    /// </summary>
    public class JScript
    {
        #region 旧版本
        /// <summary>
        /// 弹出JavaScript小窗口
        /// </summary>
        /// <param name="message">窗口信息</param>
        public static void Alert(string message)
        {
            #region
            string js = @"<Script language='JavaScript'>
                    alert('" + message + "');</Script>";
            HttpContext.Current.Response.Write(js);
            #endregion
        }

        /// <summary>
        /// 弹出消息框并且转向到新的URL
        /// </summary>
        /// <param name="message">消息内容</param>
        /// <param name="toURL">连接地址</param>
        public static void AlertAndRedirect(string message, string toURL)
        {
            #region
            string js = "<script language=javascript>alert('{0}');window.location.replace('{1}')</script>";
            HttpContext.Current.Response.Write(string.Format(js, message, toURL));
            #endregion
        }

        /// <summary>
        /// 回到历史页面
        /// </summary>
        /// <param name="value">-1/1</param>
        public static void GoHistory(int value)
        {
            #region
            string js = @"<Script language='JavaScript'>
                    history.go({0}); 
                  </Script>";
            HttpContext.Current.Response.Write(string.Format(js, value));
            #endregion
        }

        /// <summary>
        /// 关闭当前窗口
        /// </summary>
        public static void CloseWindow()
        {
            #region
            string js = @"<Script language='JavaScript'>
                    parent.opener=null;window.close(); 
                  </Script>";
            HttpContext.Current.Response.Write(js);
            HttpContext.Current.Response.End();
            #endregion
        }

        /// <summary>
        /// 刷新父窗口
        /// </summary>
        public static void RefreshParent(string url)
        {
            #region
            string js = @"<Script language='JavaScript'>
                    window.opener.location.href='" + url + "';window.close();</Script>";
            HttpContext.Current.Response.Write(js);
            #endregion
        }


        /// <summary>
        /// 刷新打开窗口
        /// </summary>
        public static void RefreshOpener()
        {
            #region
            string js = @"<Script language='JavaScript'>
                    opener.location.reload();
                  </Script>";
            HttpContext.Current.Response.Write(js);
            #endregion
        }


        /// <summary>
        /// 打开指定大小的新窗体
        /// </summary>
        /// <param name="url">地址</param>
        /// <param name="width">宽</param>
        /// <param name="heigth">高</param>
        /// <param name="top">头位置</param>
        /// <param name="left">左位置</param>
        public static void OpenWebFormSize(string url, int width, int heigth, int top, int left)
        {
            #region
            string js = @"<Script language='JavaScript'>window.open('" + url + @"','','height=" + heigth + ",width=" + width + ",top=" + top + ",left=" + left + ",location=no,menubar=no,resizable=yes,scrollbars=yes,status=yes,titlebar=no,toolbar=no,directories=no');</Script>";

            HttpContext.Current.Response.Write(js);
            #endregion
        }


        /// <summary>
        /// 转向Url制定的页面
        /// </summary>
        /// <param name="url">连接地址</param>
        public static void JavaScriptLocationHref(string url)
        {
            #region
            string js = @"<Script language='JavaScript'>
                    window.location.replace('{0}');
                  </Script>";
            js = string.Format(js, url);
            HttpContext.Current.Response.Write(js);
            #endregion
        }

        /// <summary>
        /// 打开指定大小位置的模式对话框
        /// </summary>
        /// <param name="webFormUrl">连接地址</param>
        /// <param name="width">宽</param>
        /// <param name="height">高</param>
        /// <param name="top">距离上位置</param>
        /// <param name="left">距离左位置</param>
        public static void ShowModalDialogWindow(string webFormUrl, int width, int height, int top, int left)
        {
            #region
            string features = "dialogWidth:" + width.ToString() + "px"
                + ";dialogHeight:" + height.ToString() + "px"
                + ";dialogLeft:" + left.ToString() + "px"
                + ";dialogTop:" + top.ToString() + "px"
                + ";center:yes;help=no;resizable:no;status:no;scroll=yes";
            ShowModalDialogWindow(webFormUrl, features);
            #endregion
        }
        /// <summary>
        /// 弹出模态窗口
        /// </summary>
        /// <param name="webFormUrl"></param>
        /// <param name="features"></param>
        public static void ShowModalDialogWindow(string webFormUrl, string features)
        {
            string js = ShowModalDialogJavascript(webFormUrl, features);
            HttpContext.Current.Response.Write(js);
        }
        /// <summary>
        /// 弹出模态窗口
        /// </summary>
        /// <param name="webFormUrl"></param>
        /// <param name="features"></param>
        /// <returns></returns>
        public static string ShowModalDialogJavascript(string webFormUrl, string features)
        {
            #region
            string js = @"<script language=javascript>                           
                            showModalDialog('" + webFormUrl + "','','" + features + "');</script>";
            return js;
            #endregion
        }
        #endregion

        #region 新版本
        /// <summary>
        /// 弹出JavaScript小窗口
        /// </summary>
        /// <param name="message">窗口信息</param>
        /// <param name="page">Page类的实例</param>
        public static void Alert(string message, Page page)
        {
            #region
            string js = @"<Script language='JavaScript'>
                    alert('" + message + "');</Script>";
            if (!page.ClientScript.IsStartupScriptRegistered(page.GetType(), "alert"))
            {
                page.ClientScript.RegisterStartupScript(page.GetType(), "alert", js);
            }
            #endregion
        }

        /// <summary>
        /// 弹出消息框并且转向到新的URL
        /// </summary>
        /// <param name="message">消息内容</param>
        /// <param name="toURL">连接地址</param>
        /// <param name="page">Page类的实例</param>
        public static void AlertAndRedirect(string message, string toURL, Page page)
        {
            #region
            string js = "<script language=javascript>alert('{0}');window.location.replace('{1}')</script>";
            if (!page.ClientScript.IsStartupScriptRegistered(page.GetType(), "AlertAndRedirect"))
            {
                page.ClientScript.RegisterStartupScript(page.GetType(), "AlertAndRedirect", string.Format(js, message, toURL));
            }
            #endregion
        }

        /// <summary>
        /// 回到历史页面
        /// </summary>
        /// <param name="value">-1/1</param>
        /// <param name="page">Page类的实例</param>
        public static void GoHistory(int value, Page page)
        {
            #region
            string js = @"<Script language='JavaScript'>
                    history.go({0}); 
                  </Script>";
            if (!page.ClientScript.IsStartupScriptRegistered(page.GetType(), "GoHistory"))
            {
                page.ClientScript.RegisterStartupScript(page.GetType(), "GoHistory", string.Format(js, value));
            }
            #endregion
        }

        /// <summary>
        /// 刷新父窗口
        /// </summary>
        /// <param name="url">要刷新的url</param>
        /// <param name="page">Page类的实例</param>
        public static void RefreshParent(string url, Page page)
        {
            #region
            string js = @"<Script language='JavaScript'>
                    window.opener.location.href='" + url + "';window.close();</Script>";
            //HttpContext.Current.Response.Write(js);
            if (!page.ClientScript.IsStartupScriptRegistered(page.GetType(), "RefreshParent"))
            {
                page.ClientScript.RegisterStartupScript(page.GetType(), "RefreshParent", js);
            }
            #endregion
        }


        /// <summary>
        /// 刷新打开窗口
        /// </summary>
        /// <param name="page">Page类的实例</param>
        public static void RefreshOpener(Page page)
        {
            #region
            string js = @"<Script language='JavaScript'>
                    opener.location.reload();
                  </Script>";
            //HttpContext.Current.Response.Write(js);
            if (!page.ClientScript.IsStartupScriptRegistered(page.GetType(), "RefreshOpener"))
            {
                page.ClientScript.RegisterStartupScript(page.GetType(), "RefreshOpener", js);
            }
            #endregion
        }


        /// <summary>
        /// 打开指定大小的新窗体
        /// </summary>
        /// <param name="url">地址</param>
        /// <param name="width">宽</param>
        /// <param name="heigth">高</param>
        /// <param name="top">头位置</param>
        /// <param name="left">左位置</param>
        /// <param name="page">Page类的实例</param>
        public static void OpenWebFormSize(string url, int width, int heigth, int top, int left, Page page)
        {
            #region
            string js = @"<Script language='JavaScript'>window.open('" + url + @"','','height=" + heigth + ",width=" + width + ",top=" + top + ",left=" + left + ",location=no,menubar=no,resizable=yes,scrollbars=yes,status=yes,titlebar=no,toolbar=no,directories=no');</Script>";
            //HttpContext.Current.Response.Write(js);
            if (!page.ClientScript.IsStartupScriptRegistered(page.GetType(), "OpenWebFormSize"))
            {
                page.ClientScript.RegisterStartupScript(page.GetType(), "OpenWebFormSize", js);
            }
            #endregion
        }


        /// <summary>
        /// 转向Url制定的页面
        /// </summary>
        /// <param name="url">连接地址</param>
        /// <param name="page">Page类的实例</param>
        public static void JavaScriptLocationHref(string url, Page page)
        {
            #region
            string js = @"<Script language='JavaScript'>
                    window.location.replace('{0}');
                  </Script>";
            js = string.Format(js, url);
            if (!page.ClientScript.IsStartupScriptRegistered(page.GetType(), "JavaScriptLocationHref"))
            {
                page.ClientScript.RegisterStartupScript(page.GetType(), "JavaScriptLocationHref", js);
            }
            #endregion
        }

        /// <summary>
        /// 打开指定大小位置的模式对话框
        /// </summary>
        /// <param name="webFormUrl">连接地址</param>
        /// <param name="width">宽</param>
        /// <param name="height">高</param>
        /// <param name="top">距离上位置</param>
        /// <param name="left">距离左位置</param>
        /// <param name="page">Page类的实例</param>
        public static void ShowModalDialogWindow(string webFormUrl, int width, int height, int top, int left, Page page)
        {
            #region
            string features = "dialogWidth:" + width.ToString() + "px"
                + ";dialogHeight:" + height.ToString() + "px"
                + ";dialogLeft:" + left.ToString() + "px"
                + ";dialogTop:" + top.ToString() + "px"
                + ";center:yes;help=no;resizable:no;status:no;scroll=yes";
            ShowModalDialogWindow(webFormUrl, features, page);
            #endregion
        }
        /// <summary>
        /// 弹出模态窗口
        /// </summary>
        /// <param name="webFormUrl"></param>
        /// <param name="features"></param>
        /// <param name="page">Page类的实例</param>
        public static void ShowModalDialogWindow(string webFormUrl, string features, Page page)
        {
            string js = ShowModalDialogJavascript(webFormUrl, features);
            if (!page.ClientScript.IsStartupScriptRegistered(page.GetType(), "ShowModalDialogWindow"))
            {
                page.ClientScript.RegisterStartupScript(page.GetType(), "ShowModalDialogWindow", js);
            }
        }
        /// <summary>
        /// 向当前页面动态输出客户端脚本代码
        /// </summary>
        /// <param name="javascript">javascript脚本段</param>
        /// <param name="page">Page类的实例</param>
        /// <param name="afterForm">是否紧跟在&lt;form&gt;标记之后输出javascript脚本,如果不是则在&lt;/form&gt;标记之前输出脚本代码</param>
        public static void AppendScript(string javascript, Page page, bool afterForm)
        {
            if (afterForm)
            {
                page.ClientScript.RegisterClientScriptBlock(page.GetType(), page.ToString(), javascript);
            }
            else
            {
                page.ClientScript.RegisterStartupScript(page.GetType(), page.ToString(),javascript);
            }
        }
        #endregion
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 从 Unity 脚本调用 JavaScript 函数需要使用 Unity 的 JavaScript Bridge。具体步骤如下: 1. 在 Unity 创建一个 JavaScript 文件,编写需要调用的函数。 2. 在 Unity 创建一个 C# 脚本,使用 Unity 的 JavaScript Bridge 调用 JavaScript 函数。 3. 在 C# 脚本使用 Application.ExternalEval() 方法调用 JavaScript 函数。 例如,假设我们有一个 JavaScript 函数: function MyFunction() { alert("Hello from JavaScript!"); } 我们可以在 Unity 创建一个 C# 脚本,使用以下代码调用该函数: using UnityEngine; public class MyScript : MonoBehaviour { void Start() { Application.ExternalEval("MyFunction();"); } } 这将在 Unity 启动时调用 MyFunction() 函数,并在浏览器显示一个警告框,显示“Hello from JavaScript!”消息。 ### 回答2: Unity是一款跨平台开发引擎,它允许用户在单个开发环境创建游戏,应用程序和交互式体验,可以与JavaScript语言相互协作。在Unity,用户可以通过JavaScript脚本调用JavaScript函数。 在Unity调用JavaScript函数需要UnityWebRequest组件和JavaScript脚本。用户需要使用UnityWebRequest组件来创建一个HTTP请求,并将请求发送到包含JavaScript函数的服务器。此时,需要将请求发送到与用户当前使用的代码路径不同的路径上,因为代码路径访问会导致JavaScript函数无法访问。 接下来,用户需要将服务器上的JavaScript脚本与UnityWebRequest组件连接起来。为此,需要在JavaScript代码包含一些特殊的代码,以便UnityWebRequest组件知道如何正确解析数据。例如,为了与JavaScript函数交互,需要在JavaScript代码添加以下代码行: function OnMessageReceived(message) { // ... } 该代码会在JavaScript函数定义一个名为OnMessageReceived的函数。这个函数可以接受任何型的参数,在这个例子,我们需要传递message参数,这个参数表示从Unity发送的信息。 最后,设置UnityWebRequest组件并使用JavaScript代码会话发送请求以调用JavaScript函数。为此,用户需要在Unity创建一个HTTP POST请求并将其向JavaScript服务器发送。这个POST请求的数据包含JavaScript函数的名称(在上面的例子为OnMessageReceived)和任何必要的参数,以便调用JavaScript函数并获取返回值。 总之,在Unity调用JavaScript函数需要使用UnityWebRequest组件和JavaScript脚本,使Unity可以通过HTTP协议与JavaScript通信。用户需要在服务器端编写JavaScript代码,将其配置为接收来自Unity的HTTP请求,并运行JavaScript函数以执行适当的操作。通过这种方法,用户可以在Unity使用JavaScript,并能够在不同的编程语言之间建立交互。 ### 回答3: 从Unity脚本调用JavaScript函数可以通过Unity的内置插件UnityScript来实现。UnityScript是一种似于JavaScript脚本语言,在Unity可以用来编写游戏逻辑代码。 1. 创建Unity脚本 首先,我们需要在Unity创建一个新的脚本文件。在Unity,选择"Assets" -> "Create" -> "C# Script",然后给脚本文件命名。打开脚本文件,我们可以在其添加调用JavaScript函数的代码。 2. 编写JavaScript函数 接下来,我们需要编写要调用JavaScript函数。在Unity,可以在“Assets”窗口创建JavaScript文件,并在其编写代码。JavaScript文件应该存储在Assets文件夹下的任何一个子目录。要调用JavaScript函数应该是全局函数,可以通过window对象来访问。 3. 添加UnityScript代码 在Unity脚本添加以下代码,以调用JavaScript函数: ``` function Start() { Application.ExternalCall("javascriptFunctionName"); } ``` 其,"javascriptFunctionName"是我们要调用JavaScript函数的名称。 4. 打包项目 最后,我们需要将Unity项目打包为WebGL格式。在打包过程,Unity会将所有的JavaScript代码和UnityScript代码打包到同一个HTML页面。在这个页面,UnityScript代码在"UnityLoader.js"文件加载,而JavaScript代码在"UnityLoader.js"文件加载之后立即执行。因此,我们可以在UnityScript调用JavaScript函数。 需要注意的是,由于Unity使用了自己的JavaScript解释器(IL2CPP)来生成JavaScript代码,因此有些JavaScript语言特性可能无法直接使用。如果需要使用这些功能,需要进行特殊处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值