【问题标题】:Adding a javascript function and removing it from the HTML instantly添加 javascript 函数并立即将其从 HTML 中删除
【发布时间】:2015-07-27 15:06:02
【问题描述】:

我正在尝试将script 元素从 PHP 代码添加到 HTML 并立即将其删除,使其在 HTML 中不可见。该脚本仅包含要同时执行的内容,而不包含功能。一般来说,我试图复制 ASP.NETs runat 属性,所以我可以直接从 PHP 代码中设置元素的值(现在是输入)。

这是我迄今为止尝试过的(我在另一个问题中发现,我的一些更改)并且它正确添加了脚本,但不会删除它。

function JSSetValue($id, $value) // Input 'value' only
{
    echo '<script>
          var input = document.getElementById("' . $id . '");
          input.value = "' . $value . '"
          </script>';
    $html = <<<HTML
...
HTML;
    $dom = new DOMDocument();
    $dom->loadHTML($html);
    $script = $dom->getElementsByTagName('script');
    foreach($script as $item)
    {
        $item->parentNode->removeChild($item); 
        break;
    }

    $html = $dom->saveHTML();
}

【问题讨论】:

  • 愚蠢的想法:做修改服务器端。除非他们单击查看源代码,否则用户实际上已经看不到脚本。如果他们单击查看源代码,他们会看到原始 html。从活动文档中删除脚本是没有意义的(如果用户努力检索脚本,它肯定不会对用户隐藏脚本)。
  • 如果您使用的是 PHP,只需使用输入值设置服务器端创建页面。它简单干净:)
  • 如果您的目标是保护您的 js 文件,请考虑缩小。这使它们很难阅读,并且有人必须竭尽全力才能理解它们。
  • 如果我先创建输入元素(使用echo)然后想设置它的值,是不是像ASP.NET一样容易?
  • 而且我并没有试图保护我的 js 文件,它只是看起来不太整洁,因为有时我 echo 在表格中间的脚本..

标签: javascript php html


【解决方案1】:

感谢所有试图提供帮助的人。无论如何,我找到了解决我的问题的方法,那就是:

function JSSetValue($id, $value) // Input 'value' only
{
    echo '<script id="phpjs">
          var input = document.getElementById("' . $id . '");
          input.value = "' . $value . '";
          document.getElementById("phpjs").remove();
          </script>';
}

它添加和删除脚本,因此在检查元素时将不再可见。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-21
    • 1970-01-01
    • 2015-09-29
    • 1970-01-01
    • 2012-10-23
    相关资源
    最近更新 更多