Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript-提示符()中的多行文本框?_Javascript_Prompt - Fatal编程技术网

JavaScript-提示符()中的多行文本框?

JavaScript-提示符()中的多行文本框?,javascript,prompt,Javascript,Prompt,在提示符中是否仍有使文本框/输入框多行的方法?使用双引号(“\n”)括起来的文本框/输入框 否,浏览器只允许对prompt()进行单行输入。但是,只需对jQuery警报对话框库进行简单更改,就可以在那里获得多行输入。使用jquery.alerts.js,查找,并将其替换为。调用jPrompt()时应该显示多行输入字段 编辑:正如Mulletfingers999在评论中指出的那样,jQuery警报对话框已被弃用,取而代之的是。在那里你还可以显示一个“模式”对话框,这个对话框可以有任意内容,这意味着

提示符
中是否仍有使文本框/输入框多行的方法?

使用双引号(“\n”)括起来的文本框/输入框


否,浏览器只允许对
prompt()
进行单行输入。但是,只需对jQuery警报对话框库进行简单更改,就可以在那里获得多行输入。使用
jquery.alerts.js
,查找
,并将其替换为
。调用
jPrompt()
时应该显示多行输入字段


编辑:正如Mulletfingers999在评论中指出的那样,jQuery警报对话框已被弃用,取而代之的是。在那里你还可以显示一个“模式”对话框,这个对话框可以有任意内容,这意味着如果你想要多行输入,一个
标签是可能的。

对于现在几乎所有面向用户的web应用程序来说,你要避免使用像
警报()
提示()
这样的笨重的旧对话框。几乎所有你正在使用的库都应该有一个更好的答案。正如其他人所说的那样,jquery是可以的。考虑一下如何通过设计一个更聪明的界面来消除对模态的需求也是很好的

“有趣的是”,在Firefox中,他们已经在使用XUL并在此基础上重新设计了许多用户界面(而不是依赖底层操作系统的“公共对话框”)。有一个模态对话框的模板:

由于它或多或少是HTML,唯一的问题是非标准标记
对于用户界面意味着什么。XUL控件文档告诉我们,它只是一个单行条目,您需要
了解更多信息:

我认为在GTK之上查看Chromium的实现也会很“有趣”。在对WebKit迂回的包装进行了一番挖掘之后,我确实找到了,特别是这一部分:

// Adjust content area as needed.  Set up the prompt text entry or
// suppression check box.
if (ui::MessageBoxFlags::kIsJavascriptPrompt == dialog_->dialog_flags()) {
  GtkWidget* content_area =
      gtk_dialog_get_content_area(GTK_DIALOG(gtk_dialog_));
  GtkWidget* text_box = gtk_entry_new();
  gtk_entry_set_text(GTK_ENTRY(text_box),
      UTF16ToUTF8(dialog_->default_prompt_text()).c_str());
  gtk_box_pack_start(GTK_BOX(content_area), text_box, TRUE, TRUE, 0);
  g_object_set_data(G_OBJECT(gtk_dialog_), kPromptTextId, text_box);
  gtk_entry_set_activates_default(GTK_ENTRY(text_box), TRUE);
}
文本框是用
gtk\u entry\u new()
创建的,状态为
GtkEntry
为“单行文本输入字段”。对于多行输入,您必须使用
GtkTextView


因此,你的答案不仅仅是“你能吗?”而是为什么你不能(在一些流行的浏览器实现中)的确凿证据,除非有一种方法可以用某种扩展覆盖Firefox中的XUL,这种扩展很可能存在!我将把它作为练习留给读者P

Alex,我的意思是作为输入框的
textbox
。在这种情况下,不是。提示符是本机浏览器对象,因此不能直接编辑。您最好使用jQuery或类似的工具创建自己的代码:-)
可以。但是,这里是单行输入,因为缺少
多行
属性。请注意,从Firefox 4开始,您发现的常见对话框与web无关-它们已被其他地方实现的选项卡模式对话框所取代(但思路相同)。@Wladimir:感谢您的阅读。我要指出的是,截至2011年8月,Firefox 3.6仍占Firefox用户的30.28%,因此还没有“与网络无关”。我对我链接的XUL文档中的遗漏不承担任何责任。这是我第一次钻研这些代码库,出于我自己的好奇心,我在回答一个问题的时候,口齿不清地说了一句“不,你不能”。今天我花了一点时间尝试做一个超越提示的扩展,但决定试着在Firefox 6中做,似乎大部分的“如何做扩展”都是教程已经腐烂。您链接到的文档同时列出了
:)无论如何,教程应该还是不错的——就常规XUL覆盖而言,没有什么变化。但是你不会在覆盖层上走得太远,因为相关的代码移动到了一个XBL绑定()中,而更改这个绑定要复杂得多。你知道,我做了一系列的研究,然后在事实发生后回到过去,发现我认为是相同的文件,但可能毕竟是不同的。无论哪种方式,如果它强烈地暗示了一个区别特征,然后在后面抛出一个“…但是!”true,
prompt()
是过时的,但对于bookmarklets来说,它的使用非常简单。(还要注意的是,在2015年不幸的是,Mozilla决定反对XUL——这是一个真正的悲剧),开发人员建议jQuery用户界面尽量避免使用jQuery,因为我将其用作一个简单的javascript书签。@Wyatt8740:然后您必须重新实现该功能-用图层覆盖页面并向其添加提示内容。不幸的是,这并不完全是小事。@Wladimirplant刚刚意识到你是7-zip的作者。谢谢:)另外,我已经用
document.open()
document.write()
,和
标记完成了。巨大的痛苦,但它有效。@Wyatt8740:不,我和7-zip没有任何关系。
<vbox anonid="infoContainer" align="center" pack="center" flex="1">
    <description anonid="info.title" class="info.title" hidden="true" />
    <description anonid="info.body" class="info.body"/>
</vbox>

<row anonid="loginContainer" hidden="true" align="center">
    <label anonid="loginLabel" value="&editfield0.label;" control="loginTextbox"/>
    <textbox anonid="loginTextbox"/>
</row>

<row anonid="password1Container" hidden="true" align="center">
    <label anonid="password1Label" value="&editfield1.label;" control="password1Textbox"/>
    <textbox anonid="password1Textbox" type="password"/>
</row>

<row anonid="checkboxContainer" hidden="true">
    <spacer/>
    <checkbox anonid="checkbox"/>
</row>
case "prompt":
  this.numButtons = 2;
  this.iconClass  = ["question-icon"];
  this.soundID    = Ci.nsISound.EVENT_PROMPT_DIALOG_OPEN;
  this.initTextbox("login", this.args.value);
  // Clear the label, since this isn't really a username prompt.
  this.ui.loginLabel.setAttribute("value", "");
  break;
// Adjust content area as needed.  Set up the prompt text entry or
// suppression check box.
if (ui::MessageBoxFlags::kIsJavascriptPrompt == dialog_->dialog_flags()) {
  GtkWidget* content_area =
      gtk_dialog_get_content_area(GTK_DIALOG(gtk_dialog_));
  GtkWidget* text_box = gtk_entry_new();
  gtk_entry_set_text(GTK_ENTRY(text_box),
      UTF16ToUTF8(dialog_->default_prompt_text()).c_str());
  gtk_box_pack_start(GTK_BOX(content_area), text_box, TRUE, TRUE, 0);
  g_object_set_data(G_OBJECT(gtk_dialog_), kPromptTextId, text_box);
  gtk_entry_set_activates_default(GTK_ENTRY(text_box), TRUE);
}