Создайте один файл визитной карточки с несколькими записями с помощью javascript

#javascript #json #vcf-vcard

#javascript #json #vcf-визитная карточка

Вопрос:

Я использовал код из этого github gist, который позволяет сохранять одно содержимое в файл VCF.

 <!doctype html>
<html>
    <head>
       <script type="text/javascript" src="vcard2.js"></script>
    </head>
    <script type="text/javascript">
        // From JSON
        var johnSmith = {
            "version": "4.0",
            "n": "SMITH;John;;",
            "fn": "John Smith",
            "nickname":"js",
            "title": "Missing man too",
            "tel": [
                {"value": "555-555-555", "type": "cell"}
            ],
            "email": [
                { "value": "john.smith@work.com", "type": "work" },
                { "value": "john.smith@home.com", "type": "home" }
            ]
        }
        var link = vCard.export(johnSmith, "John Smith", false) // use parameter true to force download
        document.body.appendChild(link)
        </script>
    </body>
</html>
  

Это сработало для одного содержимого в виде файла, см. JSfiddle.
Мой вопрос в том, как добавить несколько содержимого в один и тот же файл VCF.

Ответ №1:

В предоставленной вами скрипке просто отредактируйте dump() функцию, чтобы она принимала массив. Затем выполните итерацию массива и выполните те же самые операции, объединив выходные данные (разделенные с n помощью ) в одну переменную.

     dump: function(cards) {
        var cardsLength = cards.length;
        var cardsStr = "";

        for (var cardsIndex = 0; cardsIndex < cardsLength; cardsIndex  ) {

            var card = cards[cardsIndex];
            //...existing code... just remove the return
             cardsStr =str "n";
        }
        return cardsStr;
    }
  

Теперь вызовите vCard.export() и передайте массив объектов вместо object .

Попробуйте это здесь: JSFiddle