主頁 > 前端設計 > #<ActionView::Base:0x0000000010f748>的未定義方法`user_search_admin_path'

#<ActionView::Base:0x0000000010f748>的未定義方法`user_search_admin_path'

2022-01-19 08:21:38 前端設計

單擊我的管理頁面時出現此錯誤:第 47 行 url 上的“#ActionView::Base:0x0000000010f748 的未定義方法 `user_search_admin_path'”:'<%= user_search_admin_path(:format=>:json) %>'。

我有一條“user_search”的路線,所以不確定是什么導致了這個錯誤。任何想法如何解決這個錯誤?

這是管理員路線:

resources :admin, :as  => :admin, :only => [:index, :create, :destroy] do
    collection {
      get "user_search";
      get "group_search";
      post "toggle_logging";
      post "toggle_privs";
      get "export_permissions";
      get "export_roles";
    };

以下是我的代碼檔案:

index.html.erb

<% content_for :crumbs do %>
  <li class="last"><%= link_to("Administrators", admin_index_path) %></li>
<% end %>

<% content_for :javascripts do %>
  <script type="text/javascript">

    function toggleGroup(group, that){
      var el = "."   group;
      $(el).parent().toggle(0,"swing",function(){
      });
    }

    function highlightGroup(group, role){
      var even = $('tr td.'   group).parent('.even').children("." role).css("background-color");
      var odd = $('tr td.'   group).parent('.odd').children("." role).css("background-color");
      // $('tr td.'   group).parent('.even').children("." role).animate({backgroundColor:"red", opacity:0.5},800, function(){
      //   $('tr td.'   group).parent('.even').children("." role).css({"background-color": even, opacity:1.0});    
      // });
      // $('tr td.'   group).parent('.odd').children("." role).animate({backgroundColor:"red", opacity:0.5},800, function(){
      //   $('tr td.'   group).parent('.odd').children("." role).css({"background-color": odd, opacity:1.0});
      // });

      $('tr td.'   group).parent('.odd').children('.indented_description').animate({backgroundColor:"red", opacity:0.5},800, function(){
        $('tr td.'   group).parent('.odd').children('.indented_description').css({"background-color": odd, opacity:1.0});    
      });

      $('tr td.'   group).parent('.even').children('.indented_description').animate({backgroundColor:"red", opacity:0.5},800, function(){
        $('tr td.'   group).parent('.even').children('.indented_description').css({"background-color": even, opacity:1.0});    
      });
    }

    $(document).ready(autocomplete_users);

    function autocomplete_users() {
      $(".add_usernames").autocomplete({
        minLength: 3,
        source: function(request, response) {
          var copy = this.element;
          $.ajax({
            beforeSend: function(){
              $(copy).parent().siblings(".spinner_td").css("display", "block");
            },
            complete: function() {
              $(copy).parent().siblings(".spinner_td").css("display", "none");
            },
            url: '<%= user_search_admin_path(:format=>:json) %>',
            data: {
              q: request.term,
            },
            dataType: "json",
            success: function(data) {
              response(data);
            },
          })
        },
        parse: function(data) {
          var parsed = [];

          for ( var i = 0; i < data.length;   i ) {
            var row = data[i];
            parsed[parsed.length] = {
            data: row,
            value: row,
            result: row
            };
          }

          return parsed;
        }
      });
    }

    $(document).ready(autocomplete_groups);

    function autocomplete_groups() {
      $(".add_groups").autocomplete({
        minLength: 3,
        source: function(request, response) {
          var copy = this.element;
          
          $.ajax({
            beforeSend: function(){
              $(copy).parent().siblings(".spinner_td").css("display", "block");
            },
            complete: function() {
              $(copy).parent().siblings(".spinner_td").css("display", "none");
            },
            url: '<%= group_search_admin_path(:format=>:json) %>',
            data: {
              q: request.term,
            },
            dataType: "json",
            success: function(data) {
              response(data);
            },
          })
        },
        parse: function(data) {
          var parsed = [];
          
          for ( var i = 0; i < data.length;   i ) {
            var row = data[i];
            
            parsed[parsed.length] = {
              data: row,
              value: row,
              result: row
            };
          }
          return parsed;
        }
      });
    }

    function add_new_group() {
      $.ajax({
        url:'auth_role/auth_group_add',
        success: function(result) {
          //$(result).insertBefore('#add_new_group_button')
          $('.group_table').append(result);
          autocomplete_groups();
        }
      });
    };

    function add_user_to_role() {
      $.ajax({
        url:'auth_role/auth_user_add',
        success: function(result) {
          //$(result).insertBefore('#add_new_user_button')
          $('.user_table').append(result);
          autocomplete_users();
        }
      });
    };

    function render_auth_role_partial () {
      $.ajax({
        url: 'auth_role/'   $("#roles_select").val()  '/auth_role_partial',
        success: function(result) {
          $("#edit_role_div").replaceWith(result);
          $("#roles_select").value = "<%= @role.id %>"
        }
      });
    };

    function show_new_role_form() {
      $("#selector_div").hide();
      $.ajax({
        url: 'auth_role/new',
        success: function(result) {
          $("#edit_role_div").replaceWith(result);
        }
      });
    };

    // so users cannot lock themselves out of managing users
    $(document).ready(function() {
      $('#perms_checkbox_form').submit(function () {
        if ($("input[id^='perm_role_task:manage_user_group']:checked").length == 0) {
          alert("There must be at least one role with permission to manage users.");
          return false;
        }
      });
    });

    function check_duplicate_role() {
      var new_name = $("input[id='name']").val();
      $.ajax({
        url: 'auth_role/check_duplicate_role',
        dataType: "json",
        contentType: "application/json; charset=utf-8",
        data: {new_name: new_name},
        success: function(data) {
          if (data == true) {
            validate_role_form();
          } else {
            alert("Role already exists or is empty. Please choose another name.");
          }
        }
      });
    }

    function validate_role_form() {
      // Check that the role name is alphanumeric
      var role_name = $('#edit_role_div input[name="name"]').val();
      
      if (/[^\w\s] /.test(role_name)) {
        alert("Role name can only contain letters, numbers, _, or whitespace");
        $('#edit_role_div input[name="name"]').css("background-color", "#FFB2B2");
        return;
      }
      
      if ($.trim(role_name).length < 1) {
        alert("Role name cannot be blank");
        $('#edit_role_div input[name="name"]').css("background-color", "#FFB2B2");
        return;
      }
      
      var groups = ($("input[id='auth_groups_name']"));
      var users = ($("input[id='users_']"));
      var group_names = [];
      var user_names= [];
      var submit_flag = 1;
      
      $.each(groups, (function(index, elem) {
        group_names.push($(elem).val());
      }))
      
      $.each(users, (function(index, elem){
        user_names.push($(elem).val());
      }))
      
      if (group_names.length > 0 || user_names.length > 0) {
        $.ajax({
          url: 'auth_role/check_groups_and_users',
          dataType: "json",
          contentType: "application/json; charset=utf-8",
          data: {group_names: group_names, user_names: user_names},
          success:function(data) { 
            $("input[id='auth_groups_name']").css("background-color", "white");
            $("input[id='users_']").css("background-color", "white");
            
            if (data.invalid_groups.length > 0) { 
              submit_flag = 0;
              // mark invalid groups
              alert("At least one group is not a valid group.");
              $.each(data.invalid_groups, function(index, elem) {
                var ind = group_names.indexOf(elem);
                $("input[id='auth_groups_name']").eq(ind).css("background-color", "#FFB2B2");
                //$("input[id='auth_groups_name'][value='nen_project']").parent().parent().append('<td>Not a valid group.</td>');
              });
            }
            
            if (data.invalid_users.length >0 ) {
              submit_flag = 0;
              alert("At least one user is not a valid user.");
              $.each(data.invalid_users, function(index, elem) {
                var ind = user_names.indexOf(elem);
                $("input[id='users_']").eq(ind).css("background-color", "#FFB2B2");
              });
            }

            if (submit_flag == 1) {
              $("#update_role_form").submit();
            }
          }
        });
      } else {
        $("#update_role_form").submit();
      }
    }

    function export_perms() {
      window.location.href = "<%= export_permissions_admin_path(:format => 'tsv') %>";
    };

    function export_roles() {
      window.location.href = "<%= export_roles_admin_path(:format => 'tsv') %>";
    };
  </script>
<% end %>

<% content_for :title do %>
  Administrator Panel
<% end %>

<h1><%= yield :title %></h1>

<h2>Build Logging</h2>
<%= form_tag("/admin/toggle_logging", :method =>"post", :id => "toggle_logging") do %>
  The build detailed logging is currently <%= "#{@system_settings.detailed_logging ? 'Enabled': 'Disabled'}" %>
  <br/><br/>
  <%= submit_tag "#{@system_settings.detailed_logging ? 'Disable' : 'Enable'} Logging" ,:class=>"submit_auth_button"%>
<% end %>
<hr>

<% row_class = "even"
  groups = []

  def replaceSpaces(str)
    if str.to_s.strip.length == 0
     return str
    else
      copy = str

      copy = copy.gsub " ", "_"
      copy = copy.gsub "-", "_"
      copy = copy.gsub ":", "_"
      copy = copy.gsub "__", "_"
      copy = copy.downcase
      return copy
    end
  end

  def cleanDescription(str)
    if str.to_s.strip.length == 0
     return str
    else
      copy = str
      copy = copy.gsub "Edit CR Field: ", ""
      copy = copy.gsub "Task: ", ""
      copy = copy.gsub "Element: ", ""
      return copy
    end
  end

  def cleanDependsOn(str)
    if str.to_s.strip.length == 0
     return str
    else
      copy = replaceSpaces(str)
      copy = copy.gsub "|", " "
      return copy
    end
  end
%>

<h2>Permissions For Roles </h2>
<%= link_to_function raw("#{image_tag('export.png')} Export Permissions as TSV"), "export_perms()" %>

</br>
</br>

<%= form_tag("/auth_permission/update", :method =>"put", :id => "perms_checkbox_form") do %>
    
<table>
  <tr>
    <th class='permissionname'> Permission </th>
    <% @roles.each do |role| %>
      <th class='rolename'><%=role.name %></th>
    <% end %>
  </tr>
  <% @permissions.each do |perm| %>
    <%= fields_for "perm_role[]", perm do |perm_fields| %>
      <% if !groups.include? perm.group %>
      <% groups << perm.group %>
      <tr class='group_header'>
        <td onclick='toggleGroup("<%="#{replaceSpaces(perm.group)}"%>", this)'><a href='javascript:void(0);' id='toggler'><%=perm.group%><span id='info_helper'>&nbsp;(click to toggle)</span></a></td>
        <% @roles.each do |perm_role| %>
          <td class='permission_chkbox all_<%=replaceSpaces(perm.group) %> all_<%=replaceSpaces(perm_role.name) %>'> <%= check_box_tag("group_#{replaceSpaces(perm.group)}_#{replaceSpaces(perm_role.name)}", "unchecked", false ) %>
        <% end %>
      </tr>
    <% end %>

    <tr class='<%= row_class %>'>
      <td class='indented_description'><%="#{cleanDescription(perm.description)}" %>
      <% if perm.depends_desc %>
        <br/>
        <span class='depends_description <%="#{cleanDependsOn(perm.depends_on)}" %>'>
          <%="#{perm.depends_desc}" %>
        </span>
      <% end %>
      </td>
      <% @roles.each do |perm_role| %>
        <td class='permission_chkbox <%=replaceSpaces(perm.group) %> <%=replaceSpaces(perm_role.name)%>'> <%= check_box_tag("perm_role[#{perm.name},#{perm_role.name}]", "", perm.authroles.include?(perm_role) )  %></td>
      <% end %>

      <% 
        if row_class == 'even'
          row_class = 'odd'
        else
          row_class = 'even'
        end
      %>
    <% end %>  
    </tr>
  <%end%>
</table>

<br/>

<%= submit_tag "Update Permissions" ,:class=>"submit_auth_button"%>
<% end %>


<script>
  <% usednames = [] %>
  <% jsgroups = [] %>
  <% @permissions.each do |perm| %>
    <% @roles.each do |perm_role| %>
      var elementId = '#<%="group_#{replaceSpaces(perm.group)}_#{replaceSpaces(perm_role.name)}"%>';
      <% if !jsgroups.include? "#{perm_role.name} #{perm.group}" %>
        <% jsgroups << "#{perm_role.name} #{perm.group}" %>
        
        $(elementId).click(function(){

          // Check all the children
          if(this.checked){
            $(elementId).prop("checked", true);
            //console.log($('.<%="#{replaceSpaces(perm.group)}.#{replaceSpaces(perm_role.name)}"%> input'))
             $('.<%="#{replaceSpaces(perm.group)}.#{replaceSpaces(perm_role.name)}"%> input').each(function() { 
              $(this).prop("checked", true) 
            });
          }
          else{
            $(elementId).prop("checked", false);
            $('.<%="#{replaceSpaces(perm.group)}.#{replaceSpaces(perm_role.name)}"%> input').each(function() { 
              $(this).prop("checked", false) 
            });
          }
        });
      <% end %>

      // Need to clear out this variable otherwise it'll get confused
      elementId = ""

      // Check if everything under that group/role is already checked
      // If it is then check the Group Header
      // If it's not don't do anything
      var is_all_checked = true;
      $('.<%="#{replaceSpaces(perm.group)}.#{replaceSpaces(perm_role.name)}"%> input').each(function(){ 
        if(!this.checked || typeof(this.checked) == "undefined") is_all_checked = false
      });
      if(is_all_checked){
        $('#<%="group_#{replaceSpaces(perm.group)}_#{replaceSpaces(perm_role.name)}"%>').prop("checked", true);
      }

      // If any of the children permission roles get change, let's figure out if we need to check/uncheck
      // the parent 
      $('.<%="#{replaceSpaces(perm.group)}.#{replaceSpaces(perm_role.name)}"%> input').change(function(){ 
        // Check if everythin in that gorup is already filled out
        var is_all_checked = true;
        $('.<%="#{replaceSpaces(perm.group)}.#{replaceSpaces(perm_role.name)}"%> input').each(function(){ 
          if(!this.checked || typeof(this.checked) == "undefined") is_all_checked = false
        });
        if(is_all_checked){
          $('#<%="group_#{replaceSpaces(perm.group)}_#{replaceSpaces(perm_role.name)}"%>').prop("checked", true);
        }

        if(this.checked){
        }
        else{
          // uncheck the parent if any of its children are unchecked
          $('#<%="group_#{replaceSpaces(perm.group)}_#{replaceSpaces(perm_role.name)}"%>').prop("checked", false);
          //console.log("uncheck parent");      
        }
      });

      <% t = ".#{replaceSpaces(perm.group)}.#{replaceSpaces(perm_role.name)} input" %>
      <% if !usednames.include? t %>
        <% usednames << t %>
        $('.<%="#{replaceSpaces(perm.group)}.#{replaceSpaces(perm_role.name)}"%> input').change(function(){ 
          var rolename = '<%="#{replaceSpaces(perm_role.name)}"%>';
          var that = this;
          var old_color = $(that).parent().parent().children().first().children('.depends_description').css('background-color')
          $(that).parent().parent().children().first().children('.depends_description').animate({backgroundColor:'red', opacity:0.75}, 500);
          $(that).parent().parent().children().first().children('.depends_description').animate({backgroundColor:old_color, opacity:1}, 100);
         
          var classes = $(that).parent().parent().children().first().children('.depends_description').attr("class");

          if(classes && classes != "") {
            classes = classes.split(" ") 
            for(var k in classes){
              if(classes[k] != "depends_description"){
                // console.log("toggle", classes[k])
                highlightGroup(classes[k], rolename);
              }
            }
          }
        });
      <% end %>
    <% end %>
  <% end %>
</script>

<hr/>

<h2> Roles </h2>
<%= link_to_function raw("#{image_tag('export.png')} Export Roles as TSV"), "export_roles()" %>

</br>
</br>

<% if @role %>
  <div id="selector_div">
    <table>
      <tr>
        <td> Select Role: </td>
        <td>
          <%= select_tag "roles_select", options_for_select(@roles.collect {|role_option| [role_option.name, role_option.id]}, :selected => @role.id), :onchange => "render_auth_role_partial()", :class=>"role_selection" %>
        </td>
        <td>
          <%= button_to_function "Create New Role", "show_new_role_form()", :class=>"small_auth_button" %>
        </td>
        <td>
        </td>
      </tr>
    </table>
  </div>
<% end %>

<hr>

<%= render :partial => 'auth_role_form', :locals => {:role => @role, :roles => @roles}%>

admin_controller.rb

class AdminController < ApplicationController
  before_action :check_permission

  def index
    puts "stepped in index"
    @system_settings = AuthSettings.first
    @permissions = AuthPermission.sort(:group.asc, :name.asc)
    @roles = AuthRole.all(:order => :name)
    @role = @roles.first
    @users = User.administrators

    respond_to do |format|
      format.html # index.html.erb
      format.xml { render :xml => @users, :status => :ok }
      format.json { render :json => @users, :status => :ok }
    end
  end

  def create
    usernames = params[:admin][:usernames].split(',')

    @users = []
    usernames.each do |username|
      username.strip!
      next if username.empty?

      begin
        @users << User.find_or_create_admin(username)
      rescue
        logger.error("Couldn't save user with name: #{username}")
      end
    end

    respond_to do |format|
      format.html { redirect_to(:action=>:index) }
      format.xml { render :xml => @users, :status=>:created }
      format.json { render :json => @users, :status=>:created }
      format.js { render :layout=>false }
    end
  end
  
  def destroy
    @user = User.find_by_name(params[:id])

    if @user
      @user.admin = false
      if @user.save
        respond_to do |format|
          format.html
          format.xml { render :xml => @user }
          format.js { render :layout => false }
        end
      end
    else
      redirect404
    end
  end
  
  def user_search
    username = params.delete(:q)

    if username
      @users = User.search_for_usernames(username)
      respond_to do |format|
        format.json { render :json => @users }
      end
    else
      # TODO: this is erroneous because this particular request is always going to be a JSON request via the view
      # If the request was made from the outside, and it was an HTML request, it's not going to render anything...
      # regardless of whether or not the q parameter was supplied
      flash[:error] = "You need to supply a 'q' parameter in order to search"
      respond_to do |format|
        format.html { render :action=>:index }
      end
    end
  end

  def group_search
    groupname = params.delete(:q)

    if groupname
      @groupnames = User.search_for_groups(groupname)
      respond_to do |format|
        format.json { render :json => @groupnames }
      end
    else
      # TODO: this is erroneous because this particular request is always going to be a JSON request via the view
      # If the request was made from the outside, and it was an HTML request, it's not going to render anything...
      # regardless of whether or not the q parameter was supplied
      flash[:error] = "You need to supply a 'q' parameter in order to search"
      respond_to do |format|
        format.html { render :action=>:index }
      end
    end
  end

  def toggle_logging
    Rails.logger.info params
    setting = AuthSettings.first


    setting.detailed_logging = !setting.detailed_logging

    Rails.logger.info "Logging is #{setting.detailed_logging}"

    if setting.save
      flash[:notice] = "Detailed logging #{setting.detailed_logging ? 'enabled' : 'disabled'}."
    else
      flash[:error] = "Could not change logging"
    end

    redirect_to admin_index_path
  end
  
  def toggle_privs
    current_user.admin_enabled = !current_user.admin_enabled

    if current_user.save
      flash[:notice] = "Administrative privileges #{current_user.admin_enabled ? 'enabled' : 'disabled'}."
    else
      flash[:error] = "Could not change your privilege level."
    end

    redirect_to admin_index_path
  end

  def export_permissions
    respond_to do |format|
      format.tsv do
        tsv = []
        column_headers = [:description, :depends_desc, :authroles]

        # Filter records.

        records = AuthPermission.sort(:group.asc, :name.asc)

        # Render TSV lines.
        records.each do |record|
          element_line = []
          column_headers.each do |column|
            begin
              
              if column == :authroles
                value_arr = []
                value = ""
                record.authroles.each do |role|
                  value_arr << role.name
                end unless !record.authroles
                value << value_arr.join(",")

              else
                value = eval("record.#{column}")
              end

              element_line << value
            rescue
              element_line << nil
            end
          end

          tsv << element_line.join("\t")
        end

        # Add column headers to the top of the matrix.
        tsv.unshift([column_headers].flatten.join("\t"))

        render :text => tsv.join("\r\n")
      end
    end
  end

  def export_roles
    respond_to do |format|
      format.tsv do
        tsv = []
        column_headers = [:name, :description, :groups, :users]

        # Filter records.
        records = AuthRole.all(:order => :name)

        # Render TSV lines.
        records.each do |record|
          element_line = []
          column_headers.each do |column|
            begin

              if column == :groups
                value_arr = []
                value = ""
                record.groups.each do |group|
                  value_arr << group.name
                end unless !record.groups
                value << value_arr.join(",")
              elsif column == :users
                value = record.users.join(",")
              else
                value = eval("record.#{column}")
              end

              element_line << value
            rescue
              element_line << nil
            end
          end

          tsv << element_line.join("\t")
        end

        # Add column headers to the top of the matrix.
        tsv.unshift([column_headers].flatten.join("\t"))

        render :text => tsv.join("\r\n")
      end
    end
  end
  
  private
  
  def check_permission
    ensure_task_permission('task:manage_user_group')
  end
end

uj5u.com熱心網友回復:

根據您的路由定義,如果 GET 請求所需的 URI 是,/admin/user_search那么您應該使用user_search_admin_index_path- 注意_index后綴。

轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/414738.html

標籤:

上一篇:如何使用表格視圖轉到不同的視圖控制器?

下一篇:如何在rails中查詢有很多關聯

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • vue移動端上拉加載

    可能做得過于簡單或者比較low,請各位大佬留情,一起探討技術 ......

    uj5u.com 2020-09-10 04:38:07 more
  • 優美網站首頁,頂部多層導航

    一個個人用的瀏覽器首頁,可以把一下常用的網站放在這里,平常打開會比較方便。 第一步,HTML代碼 <script src=https://www.cnblogs.com/szharf/p/"js/jquery-3.4.1.min.js"></script> <div id="navigate"> <ul> <li class="labels labels_1"> ......

    uj5u.com 2020-09-10 04:38:47 more
  • 頁面為要加<!DOCTYPE html>

    最近因為寫一個js函式,需要用到$(window).height(); 由于手寫demo的時候,過于自信,其實對前端方面的認識也不夠體系,用文本檔案直接敲出來的html代碼,第一行沒有加上<!DOCTYPE html> 導致了$(window).height();的結果直接是整個document的高 ......

    uj5u.com 2020-09-10 04:38:52 more
  • WordPress網站程式手動升級要做好資料備份

    WordPress博客網站程式在進行升級前,必須要做好網站資料的備份,這個問題良家佐言是遇見過的;在剛開始接觸WordPress博客程式的時候,因為升級問題和博客網站的修改的一些嘗試,良家佐言是吃盡了苦頭。因為購買的是西部數碼的空間和域名,每當佐言把自己的WordPress博客網站搞到一塌糊涂的時候 ......

    uj5u.com 2020-09-10 04:39:30 more
  • WordPress程式不能升級為5.4.2版本的原因

    WordPress是一款個人博客系統,受到英文博客愛好者和中文博客愛好者的追捧,并逐步演化成一款內容管理系統軟體;它是使用PHP語言和MySQL資料庫開發的,用戶可以在支持PHP和MySQL資料庫的服務器上使用自己的博客。每一次WordPress程式的更新,就會牽動無數WordPress愛好者的心, ......

    uj5u.com 2020-09-10 04:39:49 more
  • 使用CSS3的偽元素進行首字母下沉和首行改變樣式

    網頁中常見的一種效果,首字改變樣式或者首行改變樣式,效果如下圖。 代碼: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, ......

    uj5u.com 2020-09-10 04:40:09 more
  • 關于a標簽的講解

    什么是a標簽? <a> 標簽定義超鏈接,用于從一個頁面鏈接到另一個頁面。 <a> 元素最重要的屬性是 href 屬性,它指定鏈接的目標。 a標簽的語法格式:<a href=https://www.cnblogs.com/summerxbc/p/"指定要跳轉的目標界面的鏈接">需要展示給用戶看見的內容</a> a標簽 在所有瀏覽器中,鏈接的默認外觀如下: 未被訪問的鏈接帶 ......

    uj5u.com 2020-09-10 04:40:11 more
  • 前端輪播圖

    在需要輪播的頁面是引入swiper.min.js和swiper.min.css swiper.min.js地址: 鏈接:https://pan.baidu.com/s/15Uh516YHa4CV3X-RyjEIWw 提取碼:4aks swiper.min.css地址 鏈接:https://pan.b ......

    uj5u.com 2020-09-10 04:40:13 more
  • 如何設定html中的背景圖片(全屏顯示,且不拉伸)

    1 <style>2 body{background-image:url(https://uploadbeta.com/api/pictures/random/?key=BingEverydayWallpaperPicture); 3 background-size:cover;background ......

    uj5u.com 2020-09-10 04:40:16 more
  • Java學習——HTML詳解(上)

    HTML詳解 初識HTML Hyper Text Markup Language(超文本標記語言) 1 <!--DOCTYPE:告訴瀏覽器我們要使用什么規范--> 2 <!DOCTYPE html> 3 <html lang="en"> 4 <head> 5 <!--meta 描述性的標簽,描述一些 ......

    uj5u.com 2020-09-10 04:40:33 more
最新发布
  • 我的第一個NPM包:panghu-planebattle-esm(胖虎飛機大戰)使用說明

    好家伙,我的包終于開發完啦 歡迎使用胖虎的飛機大戰包!! 為你的主頁添加色彩 這是一個有趣的網頁小游戲包,使用canvas和js開發 使用ES6模塊化開發 效果圖如下: (覺得圖片太sb的可以自己改) 代碼已開源!! Git: https://gitee.com/tang-and-han-dynas ......

    uj5u.com 2023-04-20 07:59:23 more
  • 生產事故-走近科學之消失的JWT

    入職多年,面對生產環境,盡管都是小心翼翼,慎之又慎,還是難免捅出簍子。輕則滿頭大汗,面紅耳赤。重則系統停擺,損失資金。每一個生產事故的背后,都是寶貴的經驗和教訓,都是專案成員的血淚史。為了更好地防范和遏制今后的各類事故,特開此專題,長期更新和記錄大大小小的各類事故。有些是親身經歷,有些是經人耳傳口授 ......

    uj5u.com 2023-04-18 07:55:04 more
  • 記錄--Canvas實作打飛字游戲

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 打開游戲界面,看到一個畫面簡潔、卻又富有挑戰性的游戲。螢屏上,有一個白色的矩形框,里面不斷下落著各種單詞,而我需要迅速地輸入這些單詞。如果我輸入的單詞與螢屏上的單詞匹配,那么我就可以獲得得分;如果我輸入的單詞錯誤或者時間過長,那么我就會輸 ......

    uj5u.com 2023-04-04 08:35:30 more
  • 了解 HTTP 看這一篇就夠

    在學習網路之前,了解它的歷史能夠幫助我們明白為何它會發展為如今這個樣子,引發探究網路的興趣。下面的這張圖片就展示了“互聯網”誕生至今的發展歷程。 ......

    uj5u.com 2023-03-16 11:00:15 more
  • 藍牙-低功耗中心設備

    //11.開啟藍牙配接器 openBluetoothAdapter //21.開始搜索藍牙設備 startBluetoothDevicesDiscovery //31.開啟監聽搜索藍牙設備 onBluetoothDeviceFound //30.停止監聽搜索藍牙設備 offBluetoothDevi ......

    uj5u.com 2023-03-15 09:06:45 more
  • canvas畫板(滑鼠和觸摸)

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>canves</title> <style> #canvas { cursor:url(../images/pen.png),crosshair; } #canvasdiv{ bo ......

    uj5u.com 2023-02-15 08:56:31 more
  • 手機端H5 實作自定義拍照界面

    手機端 H5 實作自定義拍照界面也可以使用 MediaDevices API 和 <video> 標簽來實作,和在桌面端做法基本一致。 首先,使用 MediaDevices.getUserMedia() 方法獲取攝像頭媒體流,并將其傳遞給 <video> 標簽進行渲染。 接著,使用 HTML 的 < ......

    uj5u.com 2023-01-12 07:58:22 more
  • 記錄--短視頻滑動播放在 H5 下的實作

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 短視頻已經無數不在了,但是主體還是使用 app 來承載的。本文講述 H5 如何實作 app 的視頻滑動體驗。 無聲勝有聲,一圖頂百辯,且看下圖: 網址鏈接(需在微信或者手Q中瀏覽) 從上圖可以看到,我們主要實作的功能也是本文要講解的有: ......

    uj5u.com 2023-01-04 07:29:05 more
  • 一文讀懂 HTTP/1 HTTP/2 HTTP/3

    從 1989 年萬維網(www)誕生,HTTP(HyperText Transfer Protocol)經歷了眾多版本迭代,WebSocket 也在期間萌芽。1991 年 HTTP0.9 被發明。1996 年出現了 HTTP1.0。2015 年 HTTP2 正式發布。2020 年 HTTP3 或能正... ......

    uj5u.com 2022-12-24 06:56:02 more
  • 【HTML基礎篇002】HTML之form表單超詳解

    ??一、form表單是什么

    ??二、form表單的屬性

    ??三、input中的各種Type屬性值

    ??四、標簽 ......

    uj5u.com 2022-12-18 07:17:06 more