Как взять снимок экрана веб-страницы?

Я не знаю об этой функциональности, выходящей из коробки, но вы можете сделать что-то вроде:

defmodule(Macro1, do: defmacro(coalesce(foo), do: quote(do: unquote(foo) + 1)))
defmodule(Macro2, do: defmacro(coalesce(foo), do: quote(do: unquote(foo) - 1)))

Это модули с макросами, конфликтующими именами. Мы должны импортировать их как macro1_coalesce и macro2_coalesce.

defmodule EctoExtention do
  defmacro __using__(opts) do
    Enum.flat_map(opts, fn what ->
      {mod, funs} =
        case what do
          {mod, :*} -> {mod, Module.concat([mod]).__info__(:macros)}
          {mod, funs} -> {mod, funs}
        end

      prefix =
        mod
        |> to_string()
        |> String.downcase()

      mod = Module.concat([mod]) # or :"Elixir.#{mod}"

      [
        quote(do: require(unquote(mod)))
        | Enum.map(funs, fn {fun, arity} ->
            args = for i <- 0..arity, i > 0, do: Macro.var(:"arg_#{i}", nil)

            quote do
              @doc ~s"""
              Macro #{unquote(fun)} imported from module #{unquote(mod)}
              """
              defmacro unquote(:"#{prefix}_#{fun}")(unquote_splicing(args)),
                do: unquote(mod).unquote(fun)(unquote_splicing(args))
            end
          end)
      ]
    end)
  end
end

Теперь давайте определим правила импорта макросов из разных модулей.

defmodule AllMyMacros do
  use EctoExtention, Macro1: [coalesce: 1], Macro2: :*
end

:* означает импорт всех макросов. Давайте проверим это:

defmodule Test do
  import AllMyMacros
  def info, do: Using.__info__(:macros)
  def test, do: {macro1_coalesce(42), macro2_coalesce(42)}
end


IO.inspect(Test.info(), label: "macros")
#⇒ macros: [macro1_coalesce: 1, macro2_coalesce: 1]

IO.inspect(Test.test(), label: "test")
#⇒ test: {43, 41}
14
задан NotMe 31 March 2009 в 16:11
поделиться

9 ответов

Можно захватить innerHTML из страницы и затем обрабатывают его на сервере:

document.getElementsByTagName('html')[0].innerHTML;
// this would also be interactive (i.e. if you've
// modified the DOM, that would be included)
14
ответ дан 1 December 2019 в 06:43
поделиться

Я предложил бы своего рода интеграцию с FireShot, который является Свободным дополнением Firefox/IE.

4
ответ дан 1 December 2019 в 06:43
поделиться

Нет, JavaScript не имеет ничего как это.

Я боюсь, что это будет довольно твердо. Я не могу думать ничто, что сделало бы это, не устанавливая на пользовательском компьютере.

Я хотел бы быть доказанным неправым, но по крайней мере это - ответ для Вас.

6
ответ дан 1 December 2019 в 06:43
поделиться

Получите столько Информации, сколько Вы можете о пользовательской среде с помощью jQuery. (jQuery.support) / агент пользователя / cookie / формируют входные значения, URL (для получают параметры и знать, какая страница имела ошибку),

Отправьте источник страницы любят упомянутый Moff. Попытайтесь сериализировать DOM, как это теперь, таким образом, можно сравнить то, что отличается от исходной страницы.

Также полезно отправить источник страницы, если необходимо сохранить его в исторических целях, с тех пор при обновлении страницы этим станут отличающимся.

6
ответ дан 1 December 2019 в 06:43
поделиться

Я соглашаюсь с другими ответами - провал.

Однако существует плагин Firefox, Возрастающее Средство сохранения Страницы Pearl, которое могло бы стоить изучить для связанных задач.

3
ответ дан 1 December 2019 в 06:43
поделиться

Смотрите на pagecrop (реализованный с jQuery + jCrop плагин)

3
ответ дан 1 December 2019 в 06:43
поделиться

Я должен пропускать что-то, но не можете Вы просто...

Нажмите PrtScr на клавиатуре и вставке в электронную почту.

3
ответ дан 1 December 2019 в 06:43
поделиться

Посмотрите этот вопрос. В основном, нет, не с JavaScript. Возможно, с ActiveX, но это вернулось к установке вещей на ПК клиента.

Рассмотрите запись сценария серверной стороны, который повторяет запрос пользователя точно (предполагающий, что это не после POST), и хранить получающийся файл HTML.

2
ответ дан 1 December 2019 в 06:43
поделиться

Вы могли бы изучить использование веб-решения, такого как то, предлагаемое в Супер Снимке экрана! или WebShotsPro.com. В зависимости от Ваших потребностей, таких как снимки экрана определенных областей страниц или страниц, недоступных от внешнего мира, это не может работать на Вас, но это - идея.

1
ответ дан 1 December 2019 в 06:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: