html中../在embed标签中没有用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了html中../在embed标签中没有用相关的知识,希望对你有一定的参考价值。

</html>

<body>
<img src="../image/top.jpg">
<hr>
<embed src="../123/Crash.mp3"; autostart="true" loop="true" width="350" height="45" >
</body>
</html>

图片可以正常显示,但是MP3不能播放!src中同样都存在“../”!
已经尝试只要src中不加"../"mp3就可以正常播放,
虚心求解中!(用的浏览器是IE8)

你编写的网页要是跟123这个文件夹放在同一个目录就不需要../

要是123文件夹,在你编写网页存放目录的上级目录里,就要加../

../表示上级目录,加不加取决于所编辑文件与目标文件所在文件夹位置的关系。追问

我放至文件的位置绝对没问题,我也知道“../”是放回上一层,现在的问题是在embed 标签中“../”失效的问题!

追答

你要说文件路径没问题,哪也不晓得问题出在哪了。

我写的EMBED中相对路径也用到../../,可以正常使用。

参考技术A 路径问题

Flutter bloc 在 7.2.0 版本中没有用 Equatable 重建

【中文标题】Flutter bloc 在 7.2.0 版本中没有用 Equatable 重建【英文标题】:Flutter bloc is not rebuilding in 7.2.0 version with Equatable 【发布时间】:2021-12-06 09:02:51 【问题描述】:

我创建了一个简单的应用程序来测试 bloc 7.2.0 并面临 BlocBuilder 在第一次成功重建后没有重建。在每个其他触发器上,bloc 都会发出新状态,但 BlocBuilder 会忽略它。

请注意,如果我从状态和事件中删除 extends Equatable 及其覆盖,那么每次按下按钮时 BlocBuilder 都会重建 UI。 Flutter 2.5.1 版

如果 Equatable 是必要的,为什么它不能使用它?如果 Equatable 不是必需的,为什么通过 VSCode 扩展在初始创建中使用它。

我的代码:

整体部分

import 'package:bloc/bloc.dart';
import 'package:equatable/equatable.dart';

//bloc
class MainBloc extends Bloc<MainEvent, MainState> 
  MainBloc() : super(MainInitial()) 
    on<MainButtonPressedEvent>(_onMainButtonPressedEvent);
  

  void _onMainButtonPressedEvent(
      MainButtonPressedEvent event, Emitter<MainState> emit) 
    emit(MainCalculatedState(event.inputText));
  


//states
abstract class MainState extends Equatable 
  const MainState();

  @override
  List<Object> get props => [];


class MainInitial extends MainState 

class MainCalculatedState extends MainState 
  final String exportText;
  const MainCalculatedState(this.exportText);


//events
abstract class MainEvent extends Equatable 
  const MainEvent();

  @override
  List<Object> get props => [];


class MainButtonPressedEvent extends MainEvent 
  final String inputText;
  const MainButtonPressedEvent(this.inputText);

界面部分

import 'package:bloc_test/bloc.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';

void main() 
  runApp(MyApp());


class MyApp extends StatelessWidget 
  @override
  Widget build(BuildContext context) 
    return MaterialApp(
      home: Scaffold(
        body: BlocProvider(
          create: (context) => MainBloc(),
          child: SubWidget(),
        ),
      ),
    );
  


class SubWidget extends StatelessWidget 
  TextEditingController inputText = TextEditingController();
  String? exportText;

  @override
  Widget build(BuildContext context) 
    MainBloc mainBloc = BlocProvider.of<MainBloc>(context);

    return BlocBuilder<MainBloc, MainState>(
      builder: (context, state) 
        if (state is MainCalculatedState) 
          exportText = state.exportText;
        
        return Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              Text('$exportText ?? '' data'),
              SizedBox(
                width: 200,
                child: TextField(
                  controller: inputText,
                ),
              ),
              ElevatedButton(
                  onPressed: () =>
                      mainBloc.add(MainButtonPressedEvent(inputText.text)),
                  child: const Text('Button')),
            ],
          ),
        );
      ,
    );
  

【问题讨论】:

【参考方案1】:

Equatable 用于让您轻松编程,了解状态如何以及何时相同(无更新)以及何时不同(更新)。

您的更新不起作用,因为您重复发送相同的状态,但您没有告诉 Equatable 扩展如何找出它们是否不同。所以它们都是一样的。

因此,为了确保您的程序了解某些相同类型的状态确实不同并且应该导致更新,您需要确保提及使它们不同的原因:

class MainCalculatedState extends MainState 
  final String exportText;
  const MainCalculatedState(this.exportText);

  // this tells the Equatable base class to consider your text property
  // when trying to figure out if two states are different.
  // If the text is the same, the states are the same, so no update
  // If the text is different, the states are different, so it will update 
  @override
  List<Object> get props => [this.exportText];

如果您完全删除 Equatable,则两个新实例化的状态从不相等,因此这也可以解决您的问题...除了在某些时候您希望它们成为,然后您需要重新添加。

【讨论】:

【参考方案2】:

您的 MainCalculatedState 需要从 Equatable 覆盖 props getter 并返回应该用于评估相等性的所有属性的列表。在您的情况下,它应该返回[exportText]。 示例:

class MainCalculatedState extends MainState 
  final String exportText;
  const MainCalculatedState(this.exportText);

  @override
  List<Object> get props => [exportText];

【讨论】:

现在可以使用了,非常感谢。没看到,因为我用过,如果没有覆盖,IDE 会调出来。

以上是关于html中../在embed标签中没有用的主要内容,如果未能解决你的问题,请参考以下文章

HTML多媒体标签

embed、object、video的HTML标签的区别?

embed、object、video的HTML标签的区别?

html标签之Object和EMBED标签(2)

HTML5中embed object的浏览器支持情况?

手机无法播放网页上embed标签的视频