加载功能不适用于href
Posted
技术标签:
【中文标题】加载功能不适用于href【英文标题】:Onload function not working for a href 【发布时间】:2015-02-25 12:51:14 【问题描述】:我有一个脚本:
<script>
function load_thankyou()
alert('hii');
var delay = 1000; //Your delay in milliseconds
var URL = 'thankyou.php';
setTimeout(function()
window.location = URL;
, delay);
</script>
函数调用方式如下...
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST')
if($error_flag == 0)
?>
<a class="close" href="#" onload="load_thankyou()">×</a>
<?php
?>
但似乎不知何故 onload() 函数不起作用..
【问题讨论】:
你确定a
-tag 有 onload 属性吗?
我不知道。可能是因为他们没有答案而生气。
onload
事件仅在以下元素上触发:<body>
、<frame>
、<iframe>
、<img>
、<input type="image">
、<link>
、<script>
和 @ 987654332@.
就像我说的,a-tag 没有加载。但是您可以像我发布的那样使用它。这对 a-tags 来说是一种手动加载。或者让我们说一下这个 a-tag :)
投反对票的一个原因可能是一个明显的问题,即“为什么要为此使用 onload?”为什么不直接调用函数,而不是尝试将函数归类到链接标签中,然后调用它 onload?
【参考方案1】:
你可以做的是只给你的链接一个类和href到#(什么链接到无),比如:
<a class="close" href="#" >×</a>
你的 JS 可能看起来像:
<script>
$(document).ready(function()
//check if close element exists. If yes, execute the function
if($('.close').length() > 0) load_thankyou();
);
function load_thankyou()
alert('hii');
var delay = 1000; //Your delay in milliseconds
var URL = 'thankyou.php';
setTimeout(function()
window.location = URL;
, delay);
</script>
这将等待页面加载并检查 a-tag 是否存在,如果存在,它将执行该功能。有点像a-tags的onload
【讨论】:
我刚刚编辑了我的帖子,因为我意识到该链接不像构建时那样方便:) 我没有投反对票,但是,这有什么实际意义?为什么你不只是简单地在你的$(document).ready(function());
中调用load_thankyou();
并完成它。这可能是投反对票的原因。它有效,但似乎完全没有必要
因为您可能有不同的方面,并且您不想在每个页面上都加载它:) 可能您有 100 个页面并且只想在元素存在时执行它。当然你可以检查元素是否存在并执行它。
所有逻辑都可以在您调用load_thankyou();
之前通过任意数量的检查完成功能,而一个单独的(同样无用的)功能点击所述链接【参考方案2】:
onload 属性仅适用于“body”标签, 您不能在其他任何地方使用。 要在标签中实现,您需要在加载时使用“a”标签的点击事件中的 javascript
你可以通过javascript在body load事件中“a”标签的点击事件
【讨论】:
非常感谢 Saswat... 我非常感谢您的反馈 "onload 属性仅适用于“body”标签,您不能在其他任何地方使用。"是不正确的。 Onload 对以下标签有效:、、【参考方案3】:如果是我,我只会调用函数而不是试图将函数归类到链接标签中,然后调用它 onload
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST')
if($error_flag == 0)
echo 'load_thankyou()';
?>
【讨论】:
【参考方案4】:如果你想在点击时使用该功能,可以这样使用:
<a class="close" href="javascript:load_thankyou()">×</a>
或者,如果您想在标记准备好后立即执行代码,然后在 html 之后使用您的代码,我更愿意在结束正文的结尾使用它:
<script>
load_thankyou();
</script>
</body>
在你的情况下,你可以这样做:
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST')
if($error_flag == 0)
?>
<a class="close" href="#">×</a>
<script>
load_thankyou();
</script>
<?php
?>
onload 仅针对文档真正执行,表示所有图像都已加载,您可以这样做<body onload="">
,但使用a
标签您不能这样做...
【讨论】:
但这将在点击时执行,所以实际上它不是加载:) 您无需在此处更改href
。尤其是指向Javascript
的电话,这在 SEO 方面很糟糕。以上是关于加载功能不适用于href的主要内容,如果未能解决你的问题,请参考以下文章
UNNotificationServiceExtension 不适用于 Firebase 云功能
滚动单击不适用于 NavigationManager.NavigateTo,我无法使用 href,因为我需要 forceLoad 功能