搜索词>>JavaScript 耗时0.1630
  • javascript中onclick事件传递对象参数

    javascript中onclick事件传递对象参数,javascript,javascript传递对象参数javascript中onclick事件传递对象参数<br /> <br /> 解决办法:<br /> 1.将对象转换为json串<br /> 2.传输 <pre> <code class="language-javascript">formatter:function(index, row, element){ var rosJson=JSON.stringify(row).replace(/"/g, '&quot;'); var viewBtn='<a href="javascript:;" onclick="view('+rosJson+')">查看</button>'; return viewBtn; }</code></pre> <br /> 3.如果需要字符串JSON转换为JSON对象使用 <pre> <code class="language-javascript">JSON.parse(jsonstr)</code></pre> <br /> 注意:JSON是JavaScript内置对象,无需加载任何三方js插件,部分浏览器不支持则必须引入三方库。<br />   <h2>JSON 值</h2> <p>JSON 值可以是:</p> <ul> <li>数字(整数或浮点数)</li> <li>字符串(在双引号中)</li> <li>逻辑值(true 或 false)</li> <li>数组(在方括号中)</li> <li>对象(在花括号中)</li> <li>null</li> </ul>
  • JavaScript创建对象

    JavaScript语言中对象的创建和使用1.创建一个User对象,并且赋予一个说hello的方法 <pre> <code class="language-javascript">var User=function(){ this.sayHello=function(name){ alert("Hello:"+name) } }</code></pre> 2.调用对象的方法 <pre> <code class="language-javascript">var user=new User(); user.sayHello("test");</code></pre>
  • window.location.href 新窗口

    window.location.href 新窗口,在编写代码的时候我们总是有在javascript中进行新窗口的打开,本文讲解如何在js中打开新窗口,新窗口打开,javascript,window.openwindow.location.href 新窗口,在编写代码的时候我们总是有在javascript中进行新窗口的打开,本文讲解如何在js中打开新窗口<br /> <br /> 不卖关子了。其实很简单,不用window.location.href语句<br /> 使用 <pre> <code class="language-javascript">window.open('你的地址');</code></pre> <br /> 好了,使用以上代码可以完美解决window.location.href 新窗口的问题。
  • JavaScript/jquery选择同级兄弟节点选择上下级节点方法

    JavaScript/jquery选择同级兄弟节点选择上下级节点方法 <pre> <code class="language-javascript"><script> function js_selector() { var s= document.getElementById("test"); var chils= s.childNodes; //得到s的全部子节点 var par=s.parentNode; //得到s的父节点 var ns=s.nextSbiling; //获得s的下一个兄弟节点 var ps=s.previousSbiling; //得到s的上一个兄弟节点 var fc=s.firstChild; //获得s的第一个子节点 var lc=s.lastChile; //获得s的最后一个子节点 } function jq_selector() { var s= $("#test"); var pre= $(s).prev(); //返回上一个兄弟节点,不是所有的兄弟节点 var preall=$(s).prevAll();//返回所有之前的兄弟节点 var next=$(s).next();//返回下一个兄弟节点,不是所有的兄弟节点 var nextall=$(s).nextAll();//返回所有之后的兄弟节点 var siblings=$(s).siblings();//返回兄弟姐妹节点,不分前后 } </script></code></pre>  
  • 设置Intellij Idea支持JS ES6语法

    在IDEA中对如下标签进行修改:File->l;settings->l;Languages & Frameworks->l;JavaScript 中的参数JavaScript language version更改为ECMAScript 6,apply之在IDEA中对如下标签进行修改:File->settings->Languages & Frameworks->JavaScript 中的参数JavaScript language version更改为ECMAScript 6,apply之后即可使用ES6语法。​​
  • artDialog v7使用说明及API文档

    artDialog v7 使用说明及API文档,artDialog ,artDialog具有bootstrap风格的弹窗组件<h1>artDialog具有bootstrap风格的弹窗组件</h1> <img alt="artdialog1" class="img-thumbnail" src="/assist/images/blog/859e118e483b47189690b6836e9d8416.png" /><br /> <img alt="artdialog2" class="img-thumbnail" src="/assist/images/blog/02fcbce67bc649a2b475ede25c9a3fb6.png" /><br /> <img alt="artdialog3" class="img-thumbnail" src="/assist/images/blog/c31c53851106483f908c0eb7394f4eab.png" /><br /> <img alt="artdialog4" class="img-thumbnail" src="/assist/images/blog/1875d350bcf54980b6206de142705dec.png" /><br /> <img alt="artdialog5" class="img-thumbnail" src="/assist/images/blog/b16cadd97d0448b79ac83ee18ac45630.png" /><br /> <img alt="artdialog6" class="img-thumbnail" src="/assist/images/blog/c267c1d7647340b7851a79c9514ff708.png" /><br />   <p>首页 > 文档与示例</p> <p>artDialog —— 经典、优雅的网页对话框控件。</p> <ol> <li>支持普通与 12 方向气泡状对话框</li> <li>完善的焦点处理,自动焦点附加与回退</li> <li>支持 ARIA 标准</li> <li>面向未来:基于 HTML5 Dialog 的 API</li> <li>支持标准与模态对话框</li> <li>丰富且友好的编程接口</li> <li>能自适应内容尺寸</li> </ol> <h2>引入 artDialog</h2> <h3>1.直接引用</h3> <pre> <code class="language-javascript"><script src="lib/jquery-1.10.2.js"></script> <script src="dist/dialog.js"></script></code></pre> <h3>2.作为 Webpack、RequireJS 或 SeaJS 的模块引入</h3> <p>使用 Npm 安装 <code>art-dialog</code></p> <pre> <code>npm install --save-dev art-dialog </code></pre> <pre> <code>var dialog = require('art-dialog');</code></pre> <p>**注意:**内部依赖全局模块<code>require('jquery')</code>,请注意全局模块配置是否正确</p> <ul> <li>如果需要支持 iframe 内容与拖拽,请引用加强版 dialog-plus.js</li> <li>jquery 最低要求版本为<code>1.7+</code></li> </ul> <h2>快速参考</h2> <h3>普通对话框</h3> <pre> <code class="language-javascript">var d = dialog({ title: '欢迎', content: '欢迎使用 artDialog 对话框组件!' }); d.show(); </code></pre> 运行 <h3>模态对话框</h3> <pre> <code class="language-javascript">var d = dialog({ title: 'message', content: '<input autofocus />' }); d.showModal(); </code></pre> 运行 <h3>气泡浮层</h3> <pre> <code class="language-javascript">var d = dialog({ content: 'Hello World!', quickClose: true// 点击空白处快速关闭 }); d.show(document.getElementById('quickref-bubble')); </code></pre> 运行 <p>12 个方向定位演示</p> <h3>添加按钮</h3> <p>1.确定与取消按钮:</p> <pre> <code class="language-javascript">var d = dialog({ title: '提示', content: '按钮回调函数返回 false 则不许关闭', okValue: '确定', ok: function () { this.title('提交中…'); return false; }, cancelValue: '取消', cancel: function () {} }); d.show(); </code></pre> 运行 <p>2.指定更多按钮:</p> <p>请参考 <code>button</code> 方法或参数。</p> <h3>控制对话框关闭</h3> <pre> <code class="language-javascript">var d = dialog({ content: '对话框将在两秒内关闭' }); d.show(); setTimeout(function () { d.close().remove(); }, 2000); </code></pre> 运行 <h3>给对话框左下角添加复选框</h3> <pre> <code class="language-javascript">var d = dialog({ title: '欢迎', content: '欢迎使用 artDialog 对话框组件!', ok: function () {}, statusbar: '<label><input type="checkbox">不再提醒</label>' }); d.show(); </code></pre> 运行 <h3>点按钮不关闭对话框</h3> <p>按钮事件返回 false 则不会触发关闭。</p> <pre> <code class="language-javascript">var d = dialog({ title: '欢迎', content: '欢迎使用 artDialog 对话框组件!', ok: function () { var that = this; this.title('正在提交..'); setTimeout(function () { that.close().remove(); }, 2000); return false; }, cancel: function () { alert('不许关闭'); return false; } }); d.show(); </code></pre> 运行 <h3>不显示关闭按钮</h3> <pre> <code class="language-javascript">var d = dialog({ title: '欢迎', content: '欢迎使用 artDialog 对话框组件!', cancel: false, ok: function () {} }); d.show(); </code></pre> 运行 <h3>创建 iframe 内容</h3> <p>artDialog 提供了一个增强版用来支持复杂的 iframe 套嵌的页面,可以在顶层页面创建一个可供 iframe 访问的对话框创建方法,例如:</p> <pre> <code class="language-javascript">require(['art-dialog/dist/dialog-plus'], function (dialog) { window.dialog = dialog; });</code></pre> <p>然后子页面就可以通过<code>top.dialog</code>控制对话框了。</p> <p>打开示例页面</p> <p>小提示:增强版的选项比标准版多了<code>url</code>、<code>oniframeload</code>这几个字段。</p> <h2>方法</h2> <p>若无特别说明,方法均支持链式调用。</p> <h3>show([anchor])</h3> <p>显示对话框。</p> <p>默认居中显示,支持传入元素节点或者事件对象。</p> <ul> <li>参数类型为<code>HTMLElement</code>:可吸附到元素上,同时对话框将呈现气泡样式。</li> <li>参数类型为<code>Event Object</code>:根据<code>event.pageX</code>与<code>event.pageY</code>定位。</li> </ul> <h4>示例</h4> <pre> <code class="language-javascript">var d = dialog(); d.content('hello world'); d.show(document.getElementById('api-show')); </code></pre> 运行 <pre> <code class="language-javascript">var d = dialog({ id: 'api-show-dialog', quickClose: true, content: '右键菜单' }); $(document).on('contextmenu', function (event) { d.show(event); return d.destroyed; }); </code></pre> 运行 <h3>showModal([anchor])</h3> <p>显示一个模态对话框。</p> <p>其余特性与参数可参见<code>show([anchor])</code>方法。</p> <h4>示例</h4> <pre> <code class="language-javascript">var d = dialog({ title: 'message', content: '<input autofocus />' }); d.showModal(); </code></pre> 运行 <h3>close([result])</h3> <p>关闭(隐藏)对话框。</p> <p>可接收一个返回值,可以参见 returnValue。</p> <p><strong>注意</strong>:<code>close()</code>方法只隐藏对话框,不会在 DOM 中删除,删除请使用<code>remove()</code>方法。</p> <h3>remove()</h3> <p>销毁对话框。</p> <p><strong>注意</strong>:不同于<code>close([result])</code>方法,<code>remove()</code>方法会从 DOM 中移出对话框相关节点,销毁后的对话框无法再次使用。</p> <p>对话框按钮点击后默认会依次触发 <code>close()</code>、<code>remove()</code> 方法。如果想手动控制对话框关闭可以如下操作:</p> <pre> <code class="language-javascript">var d = dialog(); // [..] d.close().remove(); </code></pre> 运行 <h3>content(html)</h3> <p>写入对话框内容。</p> <p><code>html</code>参数支持<code>String</code>、<code>HTMLElement</code>类型。</p> <h4>示例</h4> <p>传入字符串:</p> <pre> <code class="language-javascript">var d = dialog(); d.content('hello world'); d.show(); </code></pre> 运行 <p>传入元素节点:</p> <pre> <code class="language-javascript">var elem = document.getElementById('test'); dialog({ content: elem, id: 'EF893L' }).show(); </code></pre> <p>v6.0.4 更新:隐藏元素将会自动显示,并且对话框卸载的时候会放回到<code>body</code>中</p> <h3>title(text)</h3> <p> </p> <p>写入对话框标题。</p> <h4>示例</h4> <pre> <code class="language-javascript">var d = dialog(); d.title('hello world'); d.show(); </code></pre> 运行 <h3>width(value)</h3> <p>设置对话框宽度。</p> <h3>示例</h3> <pre> <code class="language-javascript">dialog({ content: 'hello world' }) .width(320) .show(); </code></pre> 运行 <h3>height(value)</h3> <p> </p> <p>设置对话框高度。</p> <h3>示例</h3> <pre> <code class="language-javascript">dialog({ content: 'hello world' }) .height(320) .show(); </code></pre> 运行 <h3>reset()</h3> <p> </p> <p>手动刷新对话框位置。</p> <p>通常动态改变了内容尺寸后需要刷新对话框位置。</p> <h3>button(args)</h3> <p> </p> <p>自定义按钮。</p> <p>参数请参考 选项<code>button</code>;同时支持传入 HTML 字符串填充按钮区域。</p> <h3>focus()</h3> <p> </p> <p>聚焦对话框(置顶)。</p> <h3>blur()</h3> <p> </p> <p>让对话框失去焦点。</p> <h3>addEventListener(type, callback)</h3> <p> </p> <p>添加事件。</p> <p>支持的事件有:<code>show</code>、<code>close</code>、<code>beforeremove</code>、<code>remove</code>、<code>reset</code>、<code>focus</code>、<code>blur</code></p> <h3>removeEventListener(type, callback)</h3> <p> </p> <p>删除事件。</p> <h3>dialog.get(id)</h3> <p> </p> <p>根据获取打开的对话框实例。</p> <p><strong>注意</strong>:这是一个静态方法。</p> <h3>dialog.getCurrent()</h3> <p> </p> <p>获取当前(置顶)对话框实例。</p> <p><strong>注意</strong>:这是一个静态方法。</p> <h2>配置参数</h2> <p> </p> <h3>content</h3> <p> </p> <p>设置消息内容。</p> <h4>类型</h4> <p>String, HTMLElement</p> <h4>示例</h4> <p>传入字符串:</p> <pre> <code class="language-javascript">dialog({ content: 'hello world!' }).show(); </code></pre> 运行 <p>传入元素节点:</p> <pre> <code class="language-javascript">var elem = document.getElementById('test'); dialog({ content: elem, id: 'EF893L' }).show(); </code></pre> <h3>title</h3> <p> </p> <p>标题内容。</p> <h4>类型</h4> <p>String</p> <h4>示例</h4> <pre> <code class="language-javascript">dialog({ title: 'hello world!' }).show(); </code></pre> 运行 <h3>statusbar</h3> <p> </p> <p>状态栏区域 HTML 代码。</p> <p>可以实现类似“不再提示”的复选框。<strong>注意</strong>:必须有按钮才会显示。</p> <h4>类型</h4> <p>String</p> <h4>示例</h4> <pre> <code class="language-javascript">var d = dialog({ title: '欢迎', content: '欢迎使用 artDialog 对话框组件!', ok: function () {}, statusbar: '<label><input type="checkbox">不再提醒</label>' }); d.show(); </code></pre> 运行 <h3>ok</h3> <p> </p> <p>确定按钮。</p> <p>回调函数<code>this</code>指向<code>dialog</code>对象,执行完毕默认关闭对话框,若返回 false 则阻止关闭。</p> <h4>类型</h4> <p>Function</p> <h4>示例</h4> <pre> <code class="language-javascript">dialog({ ok: function () { this .title('消息') .content('hello world!') .width(130); return false; } }).show(); </code></pre> 运行 <h3>okValue</h3> <p> </p> <p>(默认值: <code>"ok"</code>) 确定按钮文本。</p> <h4>类型</h4> <p>String</p> <h4>示例</h4> <pre> <code class="language-javascript">dialog({ okValue: '猛击我', ok: function () { this.content('hello world!'); return false; } }).show(); </code></pre> 运行 <h3>cancel</h3> <p> </p> <p>取消按钮。</p> <p>取消按钮也等同于标题栏的关闭按钮,若值为<code>false</code>则不显示关闭按钮。回调函数<code>this</code>指向<code>dialog</code>对象,执行完毕默认关闭对话框,若返回<code>false</code>则阻止关闭。</p> <h4>类型</h4> <p>Function, Boolean</p> <h4>示例</h4> <pre> <code class="language-javascript">dialog({ title: '消息', ok: function () {}, cancel: function () { alert('取消'); } }).show(); </code></pre> 运行 <pre> <code class="language-javascript">dialog({ title: '消息', content: '不显示关闭按钮', ok: function () {}, cancel: false }).show(); </code></pre> 运行 <h3>cancelValue</h3> <p> </p> <p>(默认值: <code>"cancel"</code>) 取消按钮文本。</p> <h4>类型</h4> <p>String</p> <h4>示例</h4> <pre> <code class="language-javascript">dialog({ cancelValue: '取消我', cancel: function () { alert('关闭'); } }).show(); </code></pre> 运行 <h3>cancelDisplay</h3> <p> </p> <p>(默认值: <code>true</code>) 是否显示取消按钮。</p> <h4>类型</h4> <p>Boolean</p> <h4>示例</h4> <pre> <code class="language-javascript">dialog({ title: '提示', content: '这是一个禁止关闭的对话框,并且没有取消按钮', cancel: function () { alert('禁止关闭'); return false; }, cancelDisplay: false }).show(); </code></pre> 运行 <h3>button</h3> <p> </p> <p>自定义按钮组。</p> <h4>类型</h4> <p>Array</p> <h4>选项</h4> <table class="table table-bordered table-hover"> <thead> <tr> <th>名称</th> <th>类型</th> <th>描述</th> </tr> </thead> <tbody> <tr> <td>value</td> <td>String</td> <td>按钮显示文本</td> </tr> <tr> <td>callback</td> <td>Function</td> <td>(可选) 回调函数<code>this</code>指向<code>dialog</code>对象,执行完毕默认关闭与销毁对话框(依次执行<code>close()</code>与<code>remove()</code>),若返回<code>false</code>则阻止关闭与销毁</td> </tr> <tr> <td>autofocus</td> <td>Boolean</td> <td>(默认值:<code>false</code>) 是否自动聚焦</td> </tr> <tr> <td>disabled</td> <td>Boolean</td> <td>(默认值: <code>false</code>) 是否禁用</td> </tr> </tbody> </table> <h4>示例</h4> <pre> <code class="language-javascript">dialog({ button: [ { value: '同意', callback: function () { this .content('你同意了'); return false; }, autofocus: true }, { value: '不同意', callback: function () { alert('你不同意') } }, { id: 'button-disabled', value: '无效按钮', disabled: true }, { value: '关闭我' } ] }).show(); </code></pre> 运行 <h3>width</h3> <p> </p> <p>设置对话框 <strong>内容</strong> 宽度。</p> <h4>类型</h4> <p>String, Number</p> <h4>示例</h4> <pre> <code class="language-javascript">dialog({ width: 460 }).show(); </code></pre> 运行 <pre> <code class="language-javascript">dialog({ width: '20em' }).show(); </code></pre> 运行 <h3>height</h3> <p> </p> <p>设置对话框 <strong>内容</strong> 高度。</p> <h4>类型</h4> <p>String, Number</p> <h4>示例</h4> <pre> <code class="language-javascript">dialog({ height: 460 }).show(); </code></pre> 运行 <pre> <code class="language-javascript">dialog({ height: '20em' }).show(); </code></pre> 运行 <h3>skin</h3> <p> </p> <p>设置对话框额外的<code>className</code>参数。</p> <p>多个<code>className</code>请使用空格隔开。</p> <h4>类型</h4> <p>String</p> <h4>示例</h4> <pre> <code class="language-javascript">dialog({ skin: 'min-dialog tips' }).show(); </code></pre> <h3>padding</h3> <p> </p> <p>(默认值: <em>继承 css 文件设置</em>) 设置消息内容与消息容器的填充边距,即 style <code>padding</code>属性</p> <h4>类型</h4> <p>String</p> <h4>示例</h4> <pre> <code class="language-javascript">dialog({ content: 'hello world', padding: 0 }).show(); </code></pre> 运行 <h3>fixed</h3> <p> </p> <p>(默认值: <code>false</code>) 开启固定定位。</p> <p>固定定位是 css2.1 <code>position</code>的一个属性,它能固定在浏览器某个地方,也不受滚动条拖动影响。IE6 与部分移动浏览器对其支持不好,内部会转成绝对定位。</p> <h4>类型</h4> <p>Boolean</p> <h4>示例</h4> <pre> <code class="language-javascript">dialog({ fixed: true, title: '消息', content: '请拖动滚动条查看' }).show(); </code></pre> 运行 <h3>align</h3> <p> </p> <p>(默认值: <code>"bottom left"</code>) 设置对话框与其他元素的对齐方式。</p> <p>如果<code>show(elem)</code>与<code>showModal(elem)</code>传入元素,<code>align</code>参数方可生效,支持如下对齐方式:</p> <ul> <li><code>"top left"</code></li> <li><code>"top"</code></li> <li><code>"top right"</code></li> <li><code>"right top"</code></li> <li><code>"right"</code></li> <li><code>"right bottom"</code></li> <li><code>"bottom right"</code></li> <li><code>"bottom"</code></li> <li><code>"bottom left"</code></li> <li><code>"left bottom"</code></li> <li><code>"left"</code></li> <li><code>"left top"</code></li> </ul> <h3>类型</h3> <p>String</p> <h3>示例</h3> <pre> <code class="language-javascript">var d = dialog({ align: 'left', content: 'Hello World!', quickClose: true }); d.show(document.getElementById('option-align')); </code></pre> 运行 <p>12 个方向定位演示</p> <h3>autofocus</h3> <p> </p> <p>(默认值: <code>true</code>) 是否支持自动聚焦。</p> <h4>类型</h4> <p>Boolean</p> <h3>quickClose</h3> <p> </p> <p>(默认值: false) 是否点击空白出快速关闭。</p> <h4>类型</h4> <p>Boolean</p> <h3>示例</h3> <pre> <code class="language-javascript">var d = dialog({ content: '点击空白处快速关闭', quickClose: true }); d.show(document.getElementById('option-quickClose')); </code></pre> 运行 <h3>zIndex</h3> <p> </p> <p>(默认值: <code>1024</code>) 重置全局<code>zIndex</code>初始值,用来改变对话框叠加高度。</p> <p>比如有时候配合外部浮动层 UI 组件,但是它们可能默认<code>zIndex</code>没有对话框高,导致无法浮动到对话框之上,这个时候你就可以给对话框指定一个较小的<code>zIndex</code>值。</p> <p>请注意这是一个会影响到全局的配置,后续出现的对话框叠加高度将重新按此累加。</p> <h4>类型</h4> <p>Number</p> <h4>示例</h4> <pre> <code class="language-javascript">dialog({ zIndex: 87 }).show(); </code></pre> 运行 <h3>onshow</h3> <p> </p> <p>对话框打开的事件。</p> <p>回调函数<code>this</code>指向<code>dialog</code>对象。</p> <h4>类型</h4> <p>Function</p> <h4>示例</h4> <pre> <code class="language-javascript">var d = dialog({ content: 'loading..', onshow: function () { this.content('dialog ready'); } }); d.show(); </code></pre> 运行 <h3>onclose</h3> <p> </p> <p>对话框关闭后执行的事件。</p> <p>回调函数<code>this</code>指向<code>dialog</code>对象。</p> <h4>类型</h4> <p>Function</p> <h4>示例</h4> <pre> <code class="language-javascript">var d = dialog({ onclose: function () { alert('对话框已经关闭'); }, ok: function () {} }); d.show(); </code></pre> 运行 <h3>onbeforeremove</h3> <p> </p> <p>对话框销毁之前事件。</p> <p>回调函数<code>this</code>指向<code>dialog</code>对象。</p> <h4>类型</h4> <p>Function</p> <h3>onremove</h3> <p> </p> <p>对话框销毁事件。</p> <p>回调函数<code>this</code>指向<code>dialog</code>对象。</p> <h4>类型</h4> <p>Function</p> <h4>示例</h4> <pre> <code class="language-javascript">var d = dialog({ onclose: function () { alert('对话框已经关闭'); }, onremove: function () { alert('对话框已经销毁'); }, ok: function () {} }); d.show(); </code></pre> 运行 <h3>onfocus</h3> <p> </p> <p>对话框获取焦点事件。</p> <p>回调函数<code>this</code>指向<code>dialog</code>对象。</p> <h4>类型</h4> <p>Function</p> <h3>onblur</h3> <p> </p> <p>对话框失去焦点事件。</p> <p>回调函数<code>this</code>指向<code>dialog</code>对象。</p> <h4>类型</h4> <p>Function</p> <h3>onreset</h3> <p> </p> <p>对话框位置重置事件。</p> <p>回调函数<code>this</code>指向<code>dialog</code>对象。</p> <h4>类型</h4> <p>Function</p> <h3>id</h3> <p> </p> <p>设定对话框唯一标识。</p> <ol> <li>可防止重复 ID 对话框弹出。</li> <li>支持使用<code>dialog.get(id)</code>获取某个对话框的接口。</li> </ol> <h4>类型</h4> <p>String</p> <h4>示例</h4> <pre> <code class="language-javascript">dialog({ id: 'id-demo', content: '再次点击运行看看' }).show(); dialog.get('id-demo').title('8888888888'); </code></pre> 运行 <h2>属性</h2> <h3>open</h3> <p>判断对话框是否被打开。</p> <h3>returnValue</h3> <p>对话框返回值。</p> <h4>示例</h4> <pre> <code class="language-javascript">var d = dialog({ title: '消息', content: '<input id="property-returnValue-demo" value="1" />', ok: function () { var value = $('#property-returnValue-demo').val(); this.close(value); this.remove(); } }); d.addEventListener('close', function () { alert(this.returnValue); }); d.show(); </code></pre> 运行
  • JavaScript中替换字符串方法replace详解

    在js编程中,也会遇到替换字符串对象中某个字符。这时候就需要使用js内置函数replace了。可以替换一个也可以替换多个,支持正则表达式匹配比较灵活<h2>情景说明</h2>     在js编程中,也会遇到替换字符串对象中某个字符。这时候就需要使用js内置函数replace了。可以替换一个也可以替换多个,支持正则表达式匹配比较灵活 <h2>replace语法</h2> <pre> <code class="language-javascript">stringObject.replace(regexp/substr,replacement)</code></pre> <table class="table table-bordered table-hover"> <tbody> <tr> <th>参数</th> <th>描述</th> </tr> <tr> <td>regexp/substr</td> <td> <p>必需。规定子字符串或要替换的模式的 RegExp 对象。</p> <p>请注意,如果该值是一个字符串,则将它作为要检索的直接量文本模式,而不是首先被转换为 RegExp 对象。</p> </td> </tr> <tr> <td>replacement</td> <td>必需。一个字符串值。规定了替换文本或生成替换文本的函数。</td> </tr> </tbody> </table>   <h2>demo</h2> <br /> 需求,替换所有英文小括号为中文括号 <pre> <code class="language-javascript">stringObject.replace(/\(/g,"("); stringObject.replace(/\)/g,")");</code></pre>
  • AES 使用JavaScript加密然后用Java解密

    引言AES代表高级加密系统,它是一种对称加密算法引言AES代表高级加密系统,它是一种对称加密算法。很多时候我们需要在客户端加密一些明文,例如密码,并将其发送到服务器,然后服务器将其解密以进一步处理.AES加密和解密更容易在Android客户端和Java服务器等相同的平台上实现,但有时在跨平台环境(如Javascript客户端和Java Server,如Spring mvc框架)中解密AES加密密码变得非常具有挑战性,因为如果任何系统默认值不匹配解密将失败。    在本文中,我们将使用spring mvc和angular js客户端创建一个应用程序。我们将有一个带有用户名和密码的表单输入的登录页面。在将密码发送到服务器之前,密码将使用CryptoJS在JavaScript中加密,并且相同的加密密码将在java中解密,并且会进行比较以匹配密码。我们将在javascript中生成salt和IV,然后生成从密码,salt和密钥大小中使用PBKDF2函数的密钥。之后,我们将使用密钥和IV对明文进行加密,并且这些密钥将在Java中进行解密。因此,基本上我们将开发一种可与Java进行可互操作的AES加密的机制,的JavaScript。    在继续进行之前,让我们明确一点,该机制仅在数据的有线传输期间(最有可能)增加了一种额外的安全性,但并未提供充分的证明安全性。如果您不使用SSL,则攻击者可以执行中间人攻击并通过为用户提供不同的密钥来窃取数据。项目结构我们这里有个spring  boot和angular js webapp项目。项目结构如下:​JavaScript中的Aes加密    对于JavaScript中的AES加密,我们已经导入了两个js文件 - crypto.js并且pbkdf2.js我们有AesUtil.js用于执行加密和解密的通用代码。这里this.keySize是4字节块的密钥大小。因此,要使用128位密钥,我们将位数除以32得到用于CryptoJS的密钥大小。 AesUtil.js:var AesUtil = function(keySize, iterationCount) { this.keySize = keySize / 32; this.iterationCount = iterationCount; }; AesUtil.prototype.generateKey = function(salt, passPhrase) { var key = CryptoJS.PBKDF2( passPhrase, CryptoJS.enc.Hex.parse(salt), { keySize: this.keySize, iterations: this.iterationCount }); return key; } AesUtil.prototype.encrypt = function(salt, iv, passPhrase, plainText) { var key = this.generateKey(salt, passPhrase); var encrypted = CryptoJS.AES.encrypt( plainText, key, { iv: CryptoJS.enc.Hex.parse(iv) }); return encrypted.ciphertext.toString(CryptoJS.enc.Base64); } AesUtil.prototype.decrypt = function(salt, iv, passPhrase, cipherText) { var key = this.generateKey(salt, passPhrase); var cipherParams = CryptoJS.lib.CipherParams.create({ ciphertext: CryptoJS.enc.Base64.parse(cipherText) }); var decrypted = CryptoJS.AES.decrypt( cipherParams, key, { iv: CryptoJS.enc.Hex.parse(iv) }); return decrypted.toString(CryptoJS.enc.Utf8); }密码加密在JavaScript中    该方法logMeIn()将在点击提交按钮后被调用。此方法将使用定义的通用代码AesUtil.js对密码进行加密并使POST请求验证密码。发送的密码将采用以下格式:iv::salt::ciphertext在服务器端,java将解密密码并在响应中发送解密密码显示在警告框中。var app = angular.module('demoApp', []); app.controller('loginController', ['$scope', '$rootScope', '$http', function ($scope, $rootScope, $http) { $scope.logMeIn = function(){ if(!$scope.userName || !$scope.password){ $scope.showMessage("Missing required fields.", false); return; } var iv = CryptoJS.lib.WordArray.random(128/8).toString(CryptoJS.enc.Hex); var salt = CryptoJS.lib.WordArray.random(128/8).toString(CryptoJS.enc.Hex); var aesUtil = new AesUtil(128, 1000); var ciphertext = aesUtil.encrypt(salt, iv, $('#key').text(), $scope.password); var aesPassword = (iv + "::" + salt + "::" + ciphertext); var password = btoa(aesPassword); var data = { userName: $scope.userName, password: password } $http.post('/login',data).then(function (response){ if(response.status === 200){ alert("Password is " + response.data.password); }else { alert("Error occurred"); } }) }; }]);Java中的AES解密首先让我们实现将拦截登录请求的控制器类。在这里,我们对密钥进行了硬编码。此密钥将由服务器唯一地生成并发送给客户端以用于每个登录请求。客户端将使用相同的密钥,而加密和服务器将使用相同的密钥进行解密。确保密钥长度为16,因为我们使用的是128位加密。请记住我们从客户端发送的加密文本的格式iv::salt::ciphertext。文本以相同的格式解密。我们已经有IV,盐和密文。import com.example.demo.model.Credentials; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import javax.servlet.http.HttpServletRequest; import java.util.HashMap; import java.util.Map; import java.util.UUID; @Controller public class WelcomeController { private static final Logger LOGGER = LoggerFactory.getLogger(WelcomeController.class); @RequestMapping(value={"/login"},method = RequestMethod.GET) public String loginPage(HttpServletRequest request){ LOGGER.info("Received request for login page with id - " + request.getSession().getId()); String randomKey = UUID.randomUUID().toString(); //String uniqueKey = randomKey.substring(randomKey.length()-17, randomKey.length() -1); String uniqueKey = "1234567891234567"; request.getSession().setAttribute("key", uniqueKey); return "index"; } @RequestMapping(value={"/login"},method = RequestMethod.POST) public @ResponseBody ResponseEntity login(@RequestBody Credentials credentials, HttpServletRequest request) { String decryptedPassword = new String(java.util.Base64.getDecoder().decode(credentials.getPassword())); AesUtil aesUtil = new AesUtil(128, 1000); Map map = new HashMap<>(); if (decryptedPassword != null && decryptedPassword.split("::").length == 3) { LOGGER.info("Password decrypted successfully for username - " + credentials.getUserName()); String password = aesUtil.decrypt(decryptedPassword.split("::")[1], decryptedPassword.split("::")[0], "1234567891234567", decryptedPassword.split("::")[2]); map.put("password", password); } return new ResponseEntity<>(map, HttpStatus.OK); } } 以下是用于AES加密和解密的java util类。您可以按照java中的AES加密和解密获得关于以下实现的更多详细说明。import org.apache.commons.codec.DecoderException; import org.apache.commons.codec.binary.Base64; import org.apache.commons.codec.binary.Hex; import javax.crypto.*; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.PBEKeySpec; import javax.crypto.spec.SecretKeySpec; import java.io.UnsupportedEncodingException; import java.security.InvalidAlgorithmParameterException; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java.security.spec.InvalidKeySpecException; import java.security.spec.KeySpec; public class AesUtil { private final int keySize; private final int iterationCount; private final Cipher cipher; public AesUtil(int keySize, int iterationCount) { this.keySize = keySize; this.iterationCount = iterationCount; try { cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); } catch (NoSuchAlgorithmException | NoSuchPaddingException e) { throw fail(e); } } public String decrypt(String salt, String iv, String passphrase, String ciphertext) { try { SecretKey key = generateKey(salt, passphrase); byte[] decrypted = doFinal(Cipher.DECRYPT_MODE, key, iv, base64(ciphertext)); return new String(decrypted, "UTF-8"); } catch (UnsupportedEncodingException e) { return null; }catch (Exception e){ return null; } } private byte[] doFinal(int encryptMode, SecretKey key, String iv, byte[] bytes) { try { cipher.init(encryptMode, key, new IvParameterSpec(hex(iv))); return cipher.doFinal(bytes); } catch (InvalidKeyException | InvalidAlgorithmParameterException | IllegalBlockSizeException | BadPaddingException e) { return null; } } private SecretKey generateKey(String salt, String passphrase) { try { SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1"); KeySpec spec = new PBEKeySpec(passphrase.toCharArray(), hex(salt), iterationCount, keySize); SecretKey key = new SecretKeySpec(factory.generateSecret(spec).getEncoded(), "AES"); return key; } catch (NoSuchAlgorithmException | InvalidKeySpecException e) { return null; } } public static byte[] base64(String str) { return Base64.decodeBase64(str); } public static byte[] hex(String str) { try { return Hex.decodeHex(str.toCharArray()); } catch (DecoderException e) { throw new IllegalStateException(e); } } private IllegalStateException fail(Exception e) { return null; } }测试AES加密和解密     DemoApplication.java作为Java应用程序运行,然后打到http:// localhost:8080。一旦出现登录页面,您可以输入用户名和密码,然后单击提交按钮,您可以在警报中看到解密的密码。​总结在这篇文章中,我们讨论了使用Java和Javascript进行可互操作的AES加密。我们使用Crypto.js库在javascript中执行此加密。提示:项目源码下载aes-encryption-javascript-java-master.zip
  • jquery模拟点击事件

    jquery模拟点击事件写法 <pre> <code class="language-javascript">//语法:$(selector).trigger("click"); $('#test).trigger("click");</code></pre>
  • layer.prompt弹出框设置默认值

    由于官方文档中并没有给出设置layer.prompt弹出框的默认值设置方法,下面通过观察layer其他方法间接实现默认值得设置<br /> 1.创建一个layer.prompt弹窗 <pre> <code class="language-javascript">var index = layer.prompt({ title : '确认弹出窗标题' },function(val, index){ layer.msg('当前输入值'+val); layer.close(index); });</code></pre> 2.通过上面定义的layer弹窗索引进行jquery设置默认值 <pre> <code class="language-javascript"> $('#layui-layer'+index + " .layui-layer-input").val("需要设置的默认值放这里");</code></pre> over<br />