加载功能不适用于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 事件仅在以下元素上触发:&lt;body&gt;&lt;frame&gt;&lt;iframe&gt;&lt;img&gt;&lt;input type="image"&gt;&lt;link&gt;&lt;script&gt; 和 @ 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 仅针对文档真正执行,表示所有图像都已加载,您可以这样做&lt;body onload=""&gt;,但使用a 标签您不能这样做...

【讨论】:

但这将在点击时执行,所以实际上它不是加载:) 您无需在此处更改href。尤其是指向Javascript 的电话,这在 SEO 方面很糟糕。

以上是关于加载功能不适用于href的主要内容,如果未能解决你的问题,请参考以下文章

UNNotificationServiceExtension 不适用于 Firebase 云功能

ajax成功功能不适用于数据表

滚动单击不适用于 NavigationManager.NavigateTo,我无法使用 href,因为我需要 forceLoad 功能

Typeahead Bloodhound 提示和自动完成功能不适用于远程 URL

AngularJS 不适用于 MVC 局部视图

为啥 PyCharm 的自动完成功能不适用于我安装的库?