在本文中,您将会了解到关于php-登录加载页面的新资讯,同时我们还将为您解释php登录页面的相关在本文中,我们将带你探索php-登录加载页面的奥秘,分析php登录页面的特点,并给出一些关于C#WPF有
在本文中,您将会了解到关于php-登录加载页面的新资讯,同时我们还将为您解释php 登录页面的相关在本文中,我们将带你探索php-登录加载页面的奥秘,分析php 登录页面的特点,并给出一些关于C# WPF有趣的登录加载窗体、dijit.layout.ContentPane href加载页面后,被加载页脚本不执行的解决办法、dojo 自动加载页面 --- 按需要加载、jquery load加载页面导致被加载页面中的UEditor失效的实用技巧。
本文目录一览:- php-登录加载页面(php 登录页面)
- C# WPF有趣的登录加载窗体
- dijit.layout.ContentPane href加载页面后,被加载页脚本不执行的解决办法
- dojo 自动加载页面 --- 按需要加载
- jquery load加载页面导致被加载页面中的UEditor失效
php-登录加载页面(php 登录页面)
我有一个PHP网站,用户可以登录.一旦他们使用其凭据提交POST数据,便被带到启动会话并检查数据库的页面.在最终将用户重定向到网站的后端之前,此过程需要很长时间.这次,使用户感到疲倦的是,在空白的白纸上走动.我想显示某种加载页面,但是当页面上有任何可打印的内容时,由于重定向,就会出现标题错误.
如何创建加载页面?我了解ajax是一种选择,但这是我唯一的选择吗?
更新:
PHP应用程序主要花费很长时间,因为每次登录都依赖于需要授权的外部API以及需要查询的收费数据.我不是要掩盖我可以轻松解决的问题,而是要创建一个更好的用户界面.
登录过程大约需要10秒钟.
解决方法:
好吧,处理此问题的简单方法如下:
一旦用户按下javascript,登录,隐藏登录按钮,注入一些 ajaxloader gif,然后发送带有登录凭证的AJAX请求,对其进行正确的加盐处理,将用户登录,将响应发布为JSON,然后拦截该响应,然后成功的情况下-重定向,如果失败的话-打印适当的消息.
一些代码:
login-handler.PHP
$user = new user();
if ($user -> login($_POST['uid'], $_POST['password'], $_POST['whatever']){
$response['type'] = 'success';
}
else{
$response['type'] = 'failure';
}
echo json_encode($response);
js-login.js
$("#login").click(function(){
// verify that user put user name, password and whatever, hide button and show ajax loader
$.get("login-handler.PHP", {user: user, password: password}, function(data){
if (data.type == "success"){
window.location = "http://example.com/new/location/whatever";
}
else{
//print message
}
}, "JSON");
});
编辑:但是我想加入其他人,并考虑使用更快/不同的API,因为10秒钟的加载时间是完全荒谬的,除非这是为自己准备的,在这种情况下-淘汰自己.
C# WPF有趣的登录加载窗体
时间如流水,只能流去不流回!点赞再看,养成习惯,这是您给我创作的动力!本文 Dotnet9 https://dotnet9.com 已收录,站长乐于分享dotnet相关技术,比如Winform、WPF、ASP.NET Core等,亦有C++桌面相关的Qt Quick和Qt Widgets等,只分享自己熟悉的、自己会的。
阅读导航:
一、先看效果
二、本文背景
三、代码实现
四、文章参考
五、代码下载
一、先看效果
二、本文背景
在YouTube上看到的一个视频,文末有链接,使用前端时间介绍的开源C# WPF 控件库HandyControl,用到了其中的头像控件、水波纹控件、拖动条控件等。
三、代码实现
站长使用.Net Core 3.1创建的WPF工程,创建名称为“CustomControlsHandyOrg”的解决方案后,需要添加Nuget库:HandyControl。
代码不多,首先在App.xaml中添加HandyControl两个样式文件:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/HandyControl;component/Themes/SkinDefault.xaml"/>
<ResourceDictionary Source="pack://application:,,,/HandyControl;component/Themes/Theme.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
另外一个代码文件是MainWindow.xaml,首先引入HandyControl命名空间
xmlns:hc="https://handyorg.github.io/handycontrol"
代码确实不多,关键代码不到10行左右
<Window x:Class="CustomControlsHandyOrg.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:CustomControlsHandyOrg"
mc:Ignorable="d"
xmlns:hc="https://handyorg.github.io/handycontrol"
Height="450" Width="300" ResizeMode="NoResize" WindowStartupLocation="CenterScreen" WindowStyle="None">
<Grid Background="#FF222222">
<StackPanel VerticalAlignment="Center">
<hc:Gravatar Id="{Binding Value,ElementName=slider}"/>
<TextBlock FontSize="18" Text="DOWNLOADING" Margin="5 15" Foreground="White" HorizontalAlignment="Center"/>
<hc:WaveProgressBar Value="{Binding Value,ElementName=slider}" Maximum="100" Background="#FF555555" WaveFill="#ff563380" WaveStroke="#FF5675" WaveThickness="1" Foreground="White"/>
<Button Content="STOP" Margin="15" HorizontalAlignment="Stretch" Background="#FF563380" BorderBrush="#FF482480" Foreground="White"/>
<hc:PreviewSlider x:Name="slider" Maximum="100" Margin="20"/>
</StackPanel>
</Grid>
</Window>
四、文章参考
上面的代码是Dotnet9看 Disign com WPF 大神视频手敲的,下面是大神youtube地址及本实例学习视频。
参考:
Design com WPF : https://www.youtube.com/watch?v=8uW5uY6PvDQ
五、代码下载
文章中代码已经全部贴出,就这么几行代码,不要奇怪,就是这么多。
本文分享自微信公众号 - Dotnet9(dotnet9_com)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
dijit.layout.ContentPane href加载页面后,被加载页脚本不执行的解决办法
使用dijit/layout/ContentPane的href属性加载页面时,被加载页的dojo代码、javascript代码都不被执行
<div data-dojo-type="dijit/layout/ContentPane" title="基本信息" data-dojo-props='href:"test.html"'></div>test.html:
<html> <head> <script > var s= new dijit.Dialog({ title:"测试页" }).show(); </script> </head> <body></body> </html>
解决办法,使用dojox/layout/ContentPane:
<div data-dojo-type="dojox/layout/ContentPane" title="基本信息" data-dojo-props='href:"test.html"'></div>
dojo 自动加载页面 --- 按需要加载
点击菜单才会去加载页面,非iframe实现,感觉效果还可以;
有些地方不尽人意,例如解析其它的库如fusionchart就有点问题。
还有就是在IE下运行要注意,不知道为什么,dojo api官网地址在IE下运行也有问题。这是一件雷人的事;
<!DOCTYPE html> <html> <head> <Meta charset="utf-8"> <title>COUNT-Magic Application</title> <link rel="shortcut icon" href="../resources/images/favicon.png" /> <link rel="stylesheet" href="app.css" type="text/css" /> <script type="text/javascript"> dojoConfig = { async: true,sysUser: {},contentRoot:'/sf/',locale: "zh" }; </script> <script type="text/javascript" src="lib/dojo/dojo.js"></script> <script type="text/javascript" src="app.js" charset="utf-8"></script> </head> <body> <!-- tree store --> <div data-dojo-type="dojo/data/ItemFileWriteStore" jsId="menuStore" url="data/menu.json"></div> <div data-dojo-type="dijit/Dialog" id="sendDialog" title="Submit Form"> <div id="sendMailBar"> <div id="fakeSend" data-dojo-type="dijit/ProgressBar"indeterminate="true" ></div> </div> </div> <div id="preloader">Loading Application...</div> <!-- Using Declarative Require to "hang" some modules off app object for declarative scripting --> <script type="dojo/require"> "app.dom": "dojo/dom","app.registry": "dijit/registry" </script> <div data-dojo-type="dijit/layout/BorderContainer" id="mainContainer" data-dojo-id="app.mainContainer" data-dojo-props="liveSplitters: false"> <!-- top --> <div data-dojo-type="dijit/layout/ContentPane" id="headerPane" data-dojo-props="region:'top',style:'height: 56px;',href:'topAp.html'"> </div> <!-- leading --> <div data-dojo-type="dijit/layout/BorderContainer" id="mainSplitter"data-dojo-props="region:'leading',splitter: true,gutters: false"> <div data-dojo-type="dijit/layout/ContentPane"data-dojo-props="title:'Search',region:'top'"> <spanid="nat-title"> 管理菜单 </span> <span> <img alt="" src="../resources/ARROW.png" id="panelToggle"> </span> </div> <div data-dojo-type="dijit/layout/AccordionContainer"id="leftAccordion" data-dojo-props='region: "center",splitter:true,minSize:120'> <div data-dojo-type="dijit/Tree" id="myNavTree" data-dojo-id="myNavTree" store="menuStore" childrenAttr="folders" query="{type:'folder'}" label="Folders" data-dojo-props="store:menuStore,query:{type:'folder'},showRoot: false,title: '分析导航',iconClass:'dijitEditorIcon dijitEditorIconcopy'"> <script type="dojo/method" event="onClick" args="item"> //console.dir(item); if(!item){ return; } app.addTab("mainTabContainer",dojoConfig.contentRoot+item.url[0],item.label[0],true); </script> </div> <div data-dojo-type="dijit/layout/ContentPane" id="ap2" data-dojo-props="title: '系统设置',iconClass:'dijitEditorIcon dijitEditorIconcopy',href:'ap2.html'"https://www.jb51.cc/tag/dio/" target="_blank">dion"></div> <div data-dojo-type="dijit/layout/ContentPane" id="ap3" data-dojo-props="title: '帮助',href:'help.html'"https://www.jb51.cc/tag/dio/" target="_blank">dion"></div> </div> </div> <!-- center --> <div data-dojo-type="dijit/layout/TabContainer" id="mainTabContainer" data-dojo-props="region: 'center',tabStrip: true"> <div data-dojo-type="dijit/layout/ContentPane" id="tabWelcome" data-dojo-props="title: 'Welcome',href:'tabWelcome.html'"></div> </div> </div> </body>
require([ "dojo/_base/fx","dojo/_base/lang","dojo/dom-style","dojo/parser","dojo/ready","dijit/registry","dijit/layout/ContentPane" ],function(baseFx,lang,domStyle,parser,ready,registry,ContentPane) { lang.setobject("app.basename",function(path,suffix) { var b = path.replace(/^.*[\/\\]/g,''); if (typeof(suffix) == 'string' && b.substr(b.length - suffix.length) == suffix) { b = b.substr(0,b.length - suffix.length); } return b; }); lang.setobject("app.addTab",function(tabContainer,href,title,closable) { if (typeof tabContainer === "string") { tabContainer = registry.byId(tabContainer); } var tabName = "tab" + app.basename(href,".html"),tab = registry.byId(tabName); if (typeof tab === "undefined") { tab = new ContentPane({ id: tabName,title: title,href: href,closable: closable,style: "padding: 3px;" }); tabContainer.addChild(tab); } tabContainer.selectChild(tab); }); lang.setobject("app.formatterInCode",function(iconClass) { //使用全局IP代替 return '<div>' + iconClass + '</div>'; }); lang.setobject("app.formatterIcon",function(iconClass) { return '<div></div>'; }); lang.setobject("app.formatterStatusIcon",function(iconClass) { return '<div></div>'; }); ready(function() { var icon; var codeIp = window.location.href; codeIp = codeIp.substring(codeIp.indexOf("://")+3,codeIp.length); var tempStr = '<script type="text/javascript">'; tempStr += "</script>"; console.info(tempStr); var nameBY = 'theme1' function getQueryStringRegExp() { var reg = new RegExp("(^|\\?|&)" + nameBY + "=([^&]*)(\\s|&|$)","i"); if (reg.test(location.href)) return unescape(RegExp.$2.replace(/\+/g," ")); return ""; }; //console.dir(dojo.hasClass(document.body,theme)); var theme = getQueryStringRegExp() || ''; //alert(codeIp+"\n"+theme); if(theme){ dojo.removeClass(document.body); dojo.addClass(document.body,theme); } parser.parse().then(function(objects) { baseFx.fadeOut({//Get rid of the loader once parsing is done node: "preloader",onEnd: function() { domStyle.set("preloader","display","none"); } }).play(); }); var oldWid = null; dojo.connect(dojo.byId("panelToggle"),'click',function(){ var sty = 'block'; var src = '.png'; if(dojo.attr(dojo.byId("panelToggle"),'src').indexOf('resources/ARROW.png')!=-1) { sty = 'none'; src = '-R.png'; oldWid = domStyle.get("mainSplitter",'width'); domStyle.set("mainSplitter",'width','30px'); } else { domStyle.set("mainSplitter",oldWid+'px'); } //console.info(oldWid); dojo.attr(dojo.byId("panelToggle"),'src','../resources/ARROW'+src); dojo.query(".thinger").style("display",sty); app.registry.byId("mainContainer").layout(); //console.dir(app.registry.byId("mainContainer")); }); }); });
jquery load加载页面导致被加载页面中的UEditor失效
今天在使用百度富文本编辑器时候,发现菜单栏点击第一次的时候富文本编辑器加载没问题,但是第二次点的时候就不能加载编辑器。一度怀疑是不是百度富编辑器使用上出了错误,但是如果是使用上出现了错误那么应该在第一次加载的时候就应该不能加载。因为使用的是jquery的load来模拟框架加载页面,那会不会是load导致被加载页面中的富编辑器加载失败呢?突然在UEditor的官方文档看到这个方法UE.delEditor(),在页面每次初始化的时候,先删除掉以前的编辑器,再次进行初始化。
解决方法:
在每个UE.getEditor之前删除UE
UE.delEditor(''XXX'');
关于php-登录加载页面和php 登录页面的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于C# WPF有趣的登录加载窗体、dijit.layout.ContentPane href加载页面后,被加载页脚本不执行的解决办法、dojo 自动加载页面 --- 按需要加载、jquery load加载页面导致被加载页面中的UEditor失效的相关信息,请在本站寻找。
本文标签: