我有两个链接,它们都会导致联系页面,但根据点击链接,联系表单中会显示不同的字段。是否有可能检测点击该URL的链接:mysite.com/contact.html
而不是mysite.com/contact.html?link=1
?也许以某种方式与JavaScript?检测点击了什么链接
回答
基本上,你有三种选择(或两个,这取决于你想怎么算):
的最好的事情,这就是你说的你不想做的事:做的稍微的网址不同(可能带有查询字符串),然后查看联系人页面中的
location
/location.search
以查看他们点击的内容。它不必像查询字符串参数那么明显;它可能更加微妙,如
example.com/contact.html
与example.com/contactb.html
。如果您希望为这两个URL提供相同的实际页面,则可以将您的服务器配置为使其中一个为另一个的别名。请注意,这不仅仅是实用(它可靠地工作),而是因为这两个页面的URL是不同的。由于页面不同,因此让它们的唯一标识符(它们的URL)有所不同是有意义的。
这是#1的一个变体:使用散列片段(例如,)来替代查询字符串或不同的页面名称。
example.com/contact.html#A
和example.com/contact.html#B
。联系人页面可以通过location.hash. (Make sure you don't have any elements with the
ID“A”
or
“B”`检查这一点,所以该网页将不会向下滚动到他们。)或者,集信息被点击的联系页面的链接时,可以寻找。这可能是一个短期到期的cookie,或session storage。
以下是会话存储的外观。在第一页上,设置会话变量:
// (The value must be a string.) sessionStorage.contactType = "some value to tell you what contact type";
在联系人页面,检索会话变量:
var contacttype = sessionStorage.contactType;
注意,这完全是客户端。有关详情,请参阅上面的链接。
正如我所见,Igal正在寻找一种JavaScript基于解决方案就我所知,会话变量在更高级别的数据存储中。 –
@PatarticsMilán:查看链接。这是* web *会话存储,完全是客户端,并通过JavaScript访问。 –
我不是专注于JavaScript,我正在寻找各种解决方案供您选择。例如,饼干不是最好的解决方案,因为许多人倾向于阻止它们。会话存储或Web存储可能是一个很好的解决方案。问题是:诸如Chrome,Opera,Firefox,Safari,Dolphin,Puffin,Skyfire等移动浏览器是否支持会话存储和/或网络存储? – Igal
添加一个类你的链接像class="detector"
和IDS像和id="B"
不是使用一个jQuery事件传递的信息。
$('.detector').click(function(){
e.preventDefault(); // prevent default anchor behavior
location.href=$(this).attr('href') + '?link=' + $(this).attr('id');
});
这将使用尽可能多的链接,如你所愿。
jQuery-only对非jQuery问题的回答没有用处。 –
我知道你正在寻找使用JavaScript这样做,但在服务器端的替代(这将让你在未来更灵活):
建立一个单一的PHP脚本处理的接触形式,根据具体的url显示不同的表单字段。假设它位于example.com/contact/index.php
。
RewriteEngine On
RewriteBase /contact/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} /([^/]+)/?$ [NC]
RewriteRule .* /contact/index.php?form=%1 [L]
这里做的事情,是捕捉一个虚拟文件夹/contact/
后并重写它作为一个URL参数index.php
(如index.php?form=sales
)
像这样的东西创建/contact
文件夹内的.htaccess
文件
现在你可以明显地使用像这些在你的HTML链接:
而且在您的联系方式index.php
,可以处理不同的$_GET
参数:
if (isset($_GET['sales']))
{
//do this
}
else if (isset($_GET['support']))
{
//do that
}
一些直接的好处:
- 您只需要管理一个文件,它不依赖于一堆嵌套的
include
s。 - 该解决方案缩放;它只需要几个
if
语句来处理另一个联系表单变量。 - 它受到客户端操作的保护。
- 1. 检测链接点击UIWebview
- 2. WebView - 用户点击链接时检测?
- 3. 检测链接被点击时WebView(Mac)
- 4. JavaScript:检测iframe中的链接点击
- 5. 检测何时用PHP点击链接
- 6. 如何检测链接上的点击
- 7. iPhone中的UIWebVIew链接点击检测
- 8. 检测哪个链接被点击?始终返回未定义。怎么了?
- 9. 一旦点击了链接,就不可点击链接 - jquery
- 10. 点击链接更改SRC ..我做错了什么?
- 11. Html链接点击 - 检查
- 12. 点击链接:什么也没发生
- 13. 为什么UIWebView链接点击错误?
- 14. 检查点击哪个链接的最佳方法是什么?
- 15. jquery检测用户是否点击了输入 - 如果没有做点什么
- 16. 检测点击了哪个CCSprite
- 17. 链接点击了更改按钮
- 18. 点击链接去不了网页
- 19. Symfony - 点击了哪个链接
- 20. 检查哪个用户点击了哪个链接
- 21. 点击链接
- 22. 单击链接后检测列标识
- 23. 链接检测?
- 24. 点击链接杀死测试
- 25. 如何可靠地检测到UIWebView中的链接点击?
- 26. 如何检测网站链接的TextView并使其可点击
- 27. 在UIWebView中检测点击 - 不在链接上
- 28. 执行PHP:检测链接被点击的时间
- 29. 如何使用Javascript检测链接点击(文字,图片等)?
- 30. 如何检测用户点击超链接
您可以使用.htaccess重写url链接。看看这个:http://stackoverflow.com/questions/11116087/url-rewriting-doesnt-rewrite-automatically – Cecil
你可以在每个链接的onclick事件中分配一个cookie,然后检查联系页面中的cookie。 –
在URL中传递它有什么问题?如果您不想使用用户可能不会接受的cookie,最安全的选择。 – NewInTheBusiness