我目前正在建立一个注册页面,如果用户离开,我想弹出一个CSS框询问他是否确定.我可以使用确认框来完成这个壮举,但客户说他们太难看了.我尝试过使用unload和beforeunload,但两者都无法阻止页面被重定向.使用那些事件,我返回false,所以也许有一种方法可以取消而不是返回false?
我有另一个解决方案是将它们重定向到另一个有我的弹出窗口的页面,但问题是如果他们确实想要离开页面,并且这不是一个错误,他们会丢失他们最初尝试的页面要去.如果我是用户,那会激怒我.
最后的解决方案是真正的弹出窗口.我唯一不喜欢的是主要的winow将有他们的目标页面,而pop将有我的页面.在我看来,它看起来不相干.最重要的是,我会担心弹出窗口拦截器.
只是为了添加每个人的评论.我知道阻止用户退出页面是令人恼火的,我认为不应该这样做.现在我正在使用确认框.发生的事情是它实际上并没有"阻止"用户离开,如果用户对注册有疑问,客户实际想要做的是提出建议.如果用户处于注册过程的中途并且由于某种原因离开,则客户希望向用户提供免费优惠券到研讨会(该客户正在销售研讨会)以希望说服用户注册.客户的印象是,由于用户已经在表单上,他正在考虑注册,因此他正在注册的内容可能是让用户注册的最终推动.理想情况下,我不必阻止用户离开,什么会一样好,而且在我看来更好的是我可以暂停卸载过程.也许睡觉命令?我不需要将用户留在页面上,因为他们将离开去任何其他页面.
此外,正如人们所说,这是一个非常可怕的标题,所以如果有人知道一个更好的标题,我真的很感激它,如果他们可以将标题改为不被垃圾邮件发送者邀请的东西.
在最后两条评论之后,我将丢弃我的真实代码,也许它会有所帮助:
这是登陆控制器:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Businessbuilder extends CI_Controller {
function __construct()
{
parent::__construct();
}
function index()
{
$RTR = $GLOBALS["RTR"];
// import the necessary libraries
$this->load->model("site_pages");
$RTR = $GLOBALS["RTR"];
// get the current site
$site = current_site();
// get the requesting url
$class = $RTR->uri->rsegments[1];
$function = $RTR->uri->rsegments[2];
// get the current function and class
$current_method = explode("::", __METHOD__);
// get the real class name that is going to be called
$site_page …Run Code Online (Sandbox Code Playgroud) 我目前创建了一个类似于Facebook的页面,它从不同的表中提取通知,比如大约8个表.每个表都有不同的结构和不同的列,所以首先要想到的是我将拥有一个全局表,如目录,并在每次新命中时刷新它.我知道插入是资源密集型的,但我希望因为它是一个静态表,我每100个访问者只会添加一条新记录,所以我想"可能"我可以逃脱这个,但我错了.我设法从只有三个人敲打网站的僵局.
所以无论如何,现在我必须使用不同的方法重做它.最初我打算做观点,但我对观点有疑问.所选表格必须包含用户的ID.以下是来自php的select语句的示例:
$get_events = "
SELECT id, " . $userId . ", 'admin_events', 0, event_start_time
FROM admin_events
WHERE CURDATE() < event_start_time AND
NOT EXISTS(SELECT id
FROM admin_event_registrations
WHERE user_id = " . $userId . " AND admin_events.id = event_id) AND
NOT EXISTS(SELECT id
FROM admin_event_declines
WHERE user_id = " . $userId . " AND admin_events.id = event_id) AND
event_capacity > (SELECT COUNT(*) FROM admin_event_registrations WHERE event_id = admin_events.id)
LIMIT 1
Run Code Online (Sandbox Code Playgroud)
对于混乱感到抱歉.无论如何,正如您所看到的,我需要从页面返回用户ID作为表中的选定列.我无法弄清楚如何使用视图进行操作,所以我不认为视图是我将要前进的方式,因为这些类型的查询中有更多.我来自MSSQL背景,我喜欢存储过程,所以如果有MYSQL的存储过程,那将是非常好的.
接下来我开始考虑临时表.该表将在内存中,该表最多可能是150行,并且不存在死锁.在临时表上插入是否仍然非常昂贵?我最终会崩溃服务器吗?现在我们每天可能有100个用户,但是当我们获得更多用户时,我希望能够成为未来的证明.
经过长时间的思考,我认为唯一的方法是用户php并将所有结果作为数组获取.问题是,我会得到类似的东西:
$my_array[0]["date_created"] = <current_date>
Run Code Online (Sandbox Code Playgroud)
上面的问题是我必须按date_created排序,但这是一个多维数组.
无论如何,要从数据库中提取150到200条MAX记录,您会采取哪种方法?临时表,视图还是php?
我目前有一个包含随机生成的订单列表的数据列表.现在没有分页,因此我很容易生成一个随机排序的列表.随着我的数据列表的增长,由于所有数据,它会变慢,因此明显的解决方案是分页.我的分页问题是每次页面加载时我都不能随机生成订单,所以我和我的经理得出结论,列表必须提前预先生成并重新生成每x个时间.现在的问题是我们如何存储这个生成的列表?我们提出了四种选择:
如果有任何其他解决方案似乎比预先生成的基于时间的列表更好,我很乐意听到它们.
谢谢.
更新:我真的喜欢的答案,但由于某种原因被删除,是有人提到使用SEED,然后我可以存储种子而不是ID列表,这将减少我的数据存储并简化一切.我刚刚测试了解决方案,它几乎完美无缺.唯一的问题是,当我使用LIMIT时,一切都会搞砸.有没有人对此提出建议?我不想每次都生成所有数据,我只想使用LIMIT*,. 如果我将它与种子一起使用,那么数字总是会重置,就像它应该的那样.
希望这是有道理的.当我考虑它时,它更有意义,而不是它的结果.
有没有办法只包含一次 javascript 文件或只声明一次函数?我遇到的问题是我有一个包含 javascript 的 HTML 模块。这个模块是循环加载的,因此该文件被加载多次。我已经解决了大部分问题,但令我烦恼的是,我知道同一个函数被多次创建,而这种外观可能多达 30 次迭代。对我来说,我不喜欢重复创建相同功能的事实。我应该关心吗?有什么办法可以防止这种情况发生吗?我知道我可以检测到函数何时存在,我可以将函数声明放在 if 语句之间吗?
我已经尝试了以下建议之一:
if(typeof btnSendInvite_click != 'function')
{
function btnSendInvite_click()
{
alert("#invite_guest_" + $(this).attr("event_id"));
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
但这不起作用。我也试过
if(!btnSendInvite_click)
{
function btnSendInvite_click()
{
alert("#invite_guest_" + $(this).attr("event_id"));
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
但它不起作用。发生的事情是我有这条线:
$(document).ready(function()
{
$(".btnSendInvite").bind("click", btnSendInvite_click);
});
Run Code Online (Sandbox Code Playgroud)
当按钮被点击时,该函数被执行六次,这是包含文件的次数,它告诉我该函数被多次创建......我想。
所以经过很多挣扎之后,这个问题正在变成与我想象的不同的东西。绑定被多次调用,因此它被多次绑定,因此多次调用该函数。我想我的下一个问题是,有没有办法只将函数绑定到控件一次?我已经尝试过 jquery“one”,但它不起作用。
我目前有一个带有一堆已删除项目的实体模型,状态被删除.有没有办法"取消删除"他们?我知道我想取消删除哪些项目,但我不知道如何取消删除这些项目.理想情况下,我想让它恢复到未改变的状态.
我目前正在使用内部框架.这一切都很棒,但框架不使用aspx页面,它使用Response.Write呈现页面.我遇到的问题是我需要在页面上使用rad控件,所以我需要做的就是生成rad控件来获取HTML代码,这样我就可以将它转储到页面上了.这可能吗?我已经尝试创建一个Page对象来使其工作,但它不起作用.似乎在调用页面时,它正在进行其他一些初始化.我也尝试将HttpContext.Current.Handler强制转换为页面,但这不起作用,因为它们使用的是另一个类,而不是System.Web.UI.Page来处理请求.
在这一点上,我不太确定还有什么可以尝试的.如果我可以模仿Page创建类,那将是非常棒的.有没有人知道正确创建和初始化Page对象的确切步骤?
希望这是有道理的......如果没有,我会尽量让它更容易理解.
谢谢!
只是想给你我正在玩的代码.希望这会告诉你我想做什么:
这是有效的:
HtmlForm f = new HtmlForm();
RadEditor re = new RadEditor();
f.ID = "form1";
this.Page.Controls.Add(f);
re.ID = "rdControl";
StringBuilder sb = new StringBuilder();
StringWriter tw = new StringWriter(sb);
HtmlTextWriter hw = new HtmlTextWriter(tw);
//Page p = new Page();//(Page)HttpContext.Current.Handler;
//HtmlForm f = new HtmlForm();
//p.Controls.Add(f);
f.Controls.Add(re);
Run Code Online (Sandbox Code Playgroud)
这不起作用:
HtmlForm f = new HtmlForm();
RadEditor re = new RadEditor();
f.ID = "form1";
Page p = new Page();
p.Controls.Add(f);
re.ID = "rdControl";
StringBuilder sb = new StringBuilder();
StringWriter …Run Code Online (Sandbox Code Playgroud)